我有一个 Ubuntu 14.04 LTS,内核 3.13,位于 Intel Xeon + 8Gb 盒子中。它在 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 名工人。
瓶颈可能在哪里?