为什么我的服务器无法服务超过 400 个并发连接

为什么我的服务器无法服务超过 400 个并发连接

我有一个 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 名工人。

瓶颈可能在哪里?

相关内容