Sto provando a testare un'app di servizio di rete che consente un numero elevato di connessioni socket simultanee.
Ho modificato /etc/sysctl.conf
con quanto segue:
kern.maxfiles=65536
kern.maxfilesperproc=65536
kern.ipc.somaxconn=10000
Con questo al posto, ulimit -n
mostra che ho un 65536 "file aperto" massimo. Eppure il mio servizio rimane bloccato attorno alla millesima connessione.
Pensando che forse è qualcosa di specifico per la piattaforma (Nodo), ho re-implementato una versione semplificata di esso in Golang, ma presenta lo stesso problema.
Succede anche se divido il lato "client" in diversi procs che aprono ciascuna una manciata di connessioni. Il servizio si blocca sempre attorno alla millesima connessione.
lsof -p <pid>
mostra 1011 connessioni IPv6 in questo modo:
gochat 25034 username 178u IPv6 0x11c1273e19ee5c8f 0t0 TCP localhost:http-alt->localhost:50080 (ESTABLISHED)
Che cosa sta imponendo questo limite massimo di connessioni socket e come posso espanderlo?