내 서버가 400개 이상의 동시 연결을 처리할 수 없는 이유는 무엇입니까?

내 서버가 400개 이상의 동시 연결을 처리할 수 없는 이유는 무엇입니까?

Intel Xeon + 8Gb 상자에 Ubuntu 14.04 LTS, 커널 3.13이 있습니다. mpm 작업자의 Apache 2.4.7로 구성되어 있으며 최대 4000개의 작업자 스레드를 수용할 수 있습니다. ISP에서 허용하는 최대 대역폭은 100Mbps입니다.

Apache ab를 사용하여 이 서버를 로컬에서 테스트하는 경우:

 ab -n 10000 -c 1000 http://www.mysite.com/test.png

다른 터미널에서 Apache 작업자를 확인합니다.

 watch -n0 'ps -eLf | grep apache | wc -l'

요청을 처리하는 스레드가 1000개에 도달할 때까지 작업자 스레드 수가 증가하는 것을 볼 수 있습니다. 여태까지는 그런대로 잘됐다.

그러나 외부 머신에서 동일한 테스트를 실행하면 작업자 수가 400명 정도에서 증가하지 않습니다. 나는 이것이 tcp/ip 구성의 일부 병목 현상과 관련이 있다고 추측합니다. 웹을 검색하면서 더 많은 동시 연결을 달성하기 위해 일부 sysctl 설정을 늘리는 방법을 설명하는 여러 웹 페이지를 발견했습니다. 나는 이것을 시도했습니다 :

 sysctl -w net.core.somaxconn=50000
 sysctl -w net.ipv4.tcp_max_syn_backlog=30000
 sysctl -w net.core.netdev_max_backlog=5000

그러나 이러한 새로운 설정으로 테스트를 반복해도 아무런 차이가 없었습니다. 동시에 400명 이상의 작업자를 볼 수 없습니다.

병목 현상이 발생하는 위치는 어디입니까?

관련 정보