Isso realmente parece um problema com a camada de rede. Quando você se deparar com este problema, você pode pegar a saída do netstat -ano e ver quantas conexões existem em determinados buckets? Se você vê uma tonelada de conexões que não estão em ESTABELECIDO, mas sim em TIME_WAIT / FIN_WAIT, etc, você provavelmente precisará ativar o tempo de reutilização e reciclagem de espera. De:
TCP_TW_REUSE This allows reusing sockets in TIME_WAIT state for new connections when it is safe from protocol viewpoint. Default value is 0 (disabled). It is generally a safer alternative to tcp_tw_recycle
echo 1 > /proc/sys/net/ipv4/tcp_tw_reuse (boolean, default: 0)
Note: The tcp_tw_reuse setting is particularly useful in environments where numerous short connections are open and left in TIME_WAIT state, such as web servers. Reusing the sockets can be very effective in reducing server load.