I have an Ubuntu 14.04 LTS, kernel 3.13 in a Intel Xeon + 8Gb box. It has apache 2.4.7 configured in mpm worker with up to 4000 workers. The max bandwidth allowed by the ISP is 100Mbps.If I test this server with apache ab locally: ab -n 10000 -c 1000 http://www.mysite.com/test.pngAnd from another terminal I check apache workers: watch -n0 'ps -eLf | grep apache | wc -l'I can watch worker count growing until reach 1000 threads serving the requests. So far so good.However if I run the same test from an external machine, workers stop growing at around 400 workers. I guess this is related to some bottle neck in the tcp/ip configuration. Searching the web I have found several web pages explaing how to increase some sysctl settings to achieve more simultaneous connections. I have tried this: sysctl -w net.core.somaxconn=50000 sysctl -w net.ipv4.tcp_max_syn_backlog=30000 sysctl -w net.core.netdev_max_backlog=5000However repeating the test with these new settings makes no difference. You cannot see more than 400 workers simultaneously.Where could be the bottle neck?
Why my server cannot serve more than 400 concurrent connections
performance;webserver;apache httpd;tcp ip