O ulimit descritor efetivo (soft) 1024 é um total para o processo, incluindo descritores que são usados para fins de não conexão. Aparentemente, esse processo está usando cerca de 100 descritores para outras coisas, deixando apenas 921 para conexões. lsof -p <process-id>
mostrará como os descritores estão sendo usados.
Para permitir mais descritores, aumente o limite flexível antes de iniciar o processo. Se você está correndo do bash, isso seria:
ulimit -Sn 2048
para aumentá-lo para 2048 para comandos futuros. Para aumentar o limite suave para qualquer que seja o máximo permitido (o limite rígido, neste caso 4096), você pode fazer:
ulimit -Sn unlimited
Se você quiser que o limite elevado se aplique apenas a um comando e não a outros comandos futuros, aumente o limite em um subnível:
(ulimit -Sn 2048 ; c1000k)
Se você quiser ir além do seu limite rígido atual de 4096 descritores, poderá executar seu teste a partir de uma conta de usuário que tenha privilégio suficiente para aumentar o limite rígido ou alterar os valores ulimit fixos e duros definidos no login tempo para sua conta de usuário, modificando /etc/security/limits.conf
ou (melhor) adicionando arquivos em /etc/security.d
. Veja os comentários no arquivo limits.conf
ou execute man limits.conf
para detalhes.