使用Apache worker MPM 来提高passenger 性能

看到了http://blog.phusion.nl/2013/03/12/tuning-phusion-passengers-concurrency-settings/的推荐,打算具体测试一下使用worker MPM对于passenger的性能提升。


实验设定:
实验对象:    自己用Rails写的web service

实验工具: 自己用scala写的基于http://gatling.io/的性能测试代码

两个实验组

  • Prefork MPM(Default) -- Apache 默认的当前MPM

  • Worker MPM -- 需要从prefork换成worker模式

如何从prefork换成worker模式

  1. 替换/etc/sysconfig/httpd文件里的HTTPD=/usr/sbin/httpd 成 HTTPD=/usr/sbin/httpd.worker

  2. 重启Apache


实验结果:

  1. 一般来说使用worker MPM模式的要比prefork模式的快一些, 尤其是Apache还没有生成所有的进程来处理所有的连接。

  2. 当prefork工作模式Apache生成了所有的进程后,这时两者的速度基本上差不多。但是由于这些新生成的httpd进程会消耗很多的memory。


实验结论:

一般来说使用prefork模式是为了兼容性,接入mod_php就和worker不兼容,因为它不是thread-safe的。如果你使用Apache2.4 一下的版本都应该考虑使用worker MPM。 如果你更新到了2.4 可以考虑event MPM。一种新的MPM。可以阅读 http://httpd.apache.org/docs/current/mod/event.html


本文出自 “coder瞬” 博客,请务必保留此出处http://mingleiwang.blog.51cto.com/9532994/1568659

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。