是什么限制了具有大量线程的Apache配置的性能?
我们在Linux 3.8上使用Apache2.2和mod_wsgi配置来测试其在高并发流量下的行为。我们使用ApacheBench(v2.3)从同一台机器创建流量 我们使用1000个线程(10个进程,100个线程)进行了很好的设置,但是在尝试从那里扩展时遇到了问题。在10000个线程(10个进程1000个线程)的情况下,服务器实际上变慢了,并且在相同数量的并发请求下开始执行非常糟糕的操作 大量Apache线程的性能限制因素是什么?为什么10000个线程的性能比1000个线程差?到底是什么限制了线程的数量?我们意识到,在通常的web服务上,10000个并发连接不是日常事务,但我们正试图更好地理解web服务器的可伸缩性和不同类型的web服务器 这是我们为1000个线程设置的mpm worker,它运行得非常好是什么限制了具有大量线程的Apache配置的性能?,apache,mod-wsgi,apachebench,Apache,Mod Wsgi,Apachebench,我们在Linux 3.8上使用Apache2.2和mod_wsgi配置来测试其在高并发流量下的行为。我们使用ApacheBench(v2.3)从同一台机器创建流量 我们使用1000个线程(10个进程,100个线程)进行了很好的设置,但是在尝试从那里扩展时遇到了问题。在10000个线程(10个进程1000个线程)的情况下,服务器实际上变慢了,并且在相同数量的并发请求下开始执行非常糟糕的操作 大量Apache线程的性能限制因素是什么?为什么10000个线程的性能比1000个线程差?到底是什么限制了线
<IfModule mpm_worker_module>
StartServers 10
MinSpareThreads 1000
MaxSpareThreads 1000
ThreadLimit 1000
ThreadsPerChild 100
MaxClients 1000
MaxRequestsPerChild 0
</IfModule>
StartServers 10
Minspare1000
MaxSpareThreads 1000
线程限制1000
螺纹圆钢100
MaxClients 1000
MaxRequestsPerChild 0
10000个线程的Mpm工作线程设置。此设置速度慢了5倍
<IfModule mpm_worker_module>
StartServers 10
MinSpareThreads 10000
MaxSpareThreads 10000
ThreadLimit 10000
ThreadsPerChild 1000
MaxClients 10000
MaxRequestsPerChild 0
</IfModule>
StartServers 10
MinSpareThreads 10000
MaxSpareThreads 10000
线程限制10000
螺纹帕尔希尔德1000
MaxClients 10000
MaxRequestsPerChild 0
我甚至不知道从哪里开始,为什么在Apache中使用那么多线程是个坏主意。我建议你先看我的PyCon演讲:
为了找到真正的瓶颈,您需要使用来自真实用户的真实流量对真实世界的应用程序进行性能监控。您可以在我的演讲中看到更多关于性能监控的内容。您的回答很有教育意义,谢谢。希望那些PyCon链接能很快建立起来。但是虽然我们的总体目标实际上是理解不同web服务器类型的理论(您的回答对这一点很有帮助),但通过这个问题,我们的目标是理解基于线程的web服务器中线程数量的限制。是物理内存吗?或者可能与上下文切换开销有关?链接应该已经起作用了。对于Python,取决于应用程序的限制是什么。可以是内存,可以是并发请求的数量,可以是线程中的GIL互斥争用。很多因素都会起作用。@GrahamDumpleton现在是2021年,你的联系被切断了。我希望你能把那些演讲放到youtube上。如果可以,请分享一个新链接。谢谢