【发布时间】:2013-07-28 08:58:29
【问题描述】:
我们在 Linux 3.8 上使用 Apache 2.2 和 mod_wsgi 配置来测试它在高并发流量下的行为。我们使用 ApacheBench (v2.3) 从同一台机器创建流量。
我们的设置在 1000 个线程(10 个进程和 100 个线程)的情况下运行良好,但在尝试从那里扩展时遇到了问题。在 10000 个线程(10 个进程 1000 个线程)的情况下,服务器实际上变慢了,并且在相同数量的并发请求下开始执行非常糟糕。
大量 Apache 线程的性能限制因素是什么?为什么 10000 个线程的性能比 1000 个线程差?到底是什么限制了线程的数量?我们意识到,在通常的 Web 服务中,10000 个并发连接并不是日常业务,但我们正在努力更好地了解 Web 服务器的可扩展性和不同类型的 Web 服务器。
这是我们为 1000 个线程设置的 mpm 工作线程,效果非常好。
<IfModule mpm_worker_module>
StartServers 10
MinSpareThreads 1000
MaxSpareThreads 1000
ThreadLimit 1000
ThreadsPerChild 100
MaxClients 1000
MaxRequestsPerChild 0
</IfModule>
Mpm 工作线程设置为 10000 个线程。此设置慢了 5 倍。
<IfModule mpm_worker_module>
StartServers 10
MinSpareThreads 10000
MaxSpareThreads 10000
ThreadLimit 10000
ThreadsPerChild 1000
MaxClients 10000
MaxRequestsPerChild 0
</IfModule>
【问题讨论】:
标签: apache mod-wsgi apachebench