Corrigido:
sudo sysctl net.ipv4.tcp_tw_reuse=1
Em seguida, reinicie o mongo.
Alternativamente, você pode adicioná-lo ao /etc/sysctl.conf (para que seja executado na reinicialização):
net.ipv4.tcp_tw_reuse=1
Em seguida, execute isso para recarregar (sem ter que reiniciar)
sudo sysctl -p /etc/sysctl.conf
Essa "correção" desabilitará o estado de espera de tempo para soquetes TCP (todo o servidor). Então, não é realmente uma correção. No entanto, até que o mongo reduza seu estado de espera de tempo usando SO_LINGER, um grande número de soquetes de servidor será agrupado no estado TIME_WAIT e permanecerá inutilizável para novas conexões. Você pode ver a contagem de conexões em TIME_WAIT com isto:
netstat -an | grep TIME_WAIT | wc -l
Com isso, consegui vê-lo falhar em cerca de 28 mil conexões TIME_WAIT. Usando este sinalizador do kernel:
sysctl net.ipv4.ip_local_port_range="18000 65535"
O servidor falha em 45k conexões. Portanto, para reproduzir o erro com mais facilidade, você pode diminuir o intervalo para 200 ou algo pequeno.
Então, o resultado disso foi afinal, uma questão de programação (como você pode ver no último link):
Opção TCP SO_LINGER (zero ) - quando necessário
http://alas.matf.bg.ac.rs /manuals/lspe/snode=105.html