Eu tenho um Ubuntu 14.04 LTS, kernel 3.13 em uma caixa Intel Xeon + 8Gb. Tem o apache 2.4.7 configurado em mpm worker com até 4000 workers. A largura de banda máxima permitida pelo ISP é de 100 Mbps.
Se eu testar este servidor com o apache ab localmente:
ab -n 10000 -c 1000 http://www.mysite.com/test.png
E a partir de outro terminal, verifico os funcionários do apache:
watch -n0 'ps -eLf | grep apache | wc -l'
Eu posso ver a contagem de funcionários crescendo até atingir os 1000 segmentos que atendem às solicitações. Até aí tudo bem.
No entanto, se eu executar o mesmo teste de uma máquina externa, os funcionários param de crescer em torno de 400 trabalhadores. Eu acho que isso está relacionado a algum gargalo na configuração tcp / ip. Pesquisando na web Eu encontrei várias páginas da web explicando como aumentar algumas configurações de sysctl para obter mais conexões simultâneas. Eu tentei isso:
sysctl -w net.core.somaxconn=50000
sysctl -w net.ipv4.tcp_max_syn_backlog=30000
sysctl -w net.core.netdev_max_backlog=5000
No entanto, repetir o teste com essas novas configurações não faz diferença. Você não pode ver mais de 400 trabalhadores simultaneamente.
Onde poderia estar o gargalo da garrafa?