看到了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模式
- 替换/etc/sysconfig/httpd文件里的HTTPD=/usr/sbin/httpd 成 HTTPD=/usr/sbin/httpd.worker
2. 重启Apache
实验结果:
- 一般来说使用worker MPM模式的要比prefork模式的快一些, 尤其是Apache还没有生成所有的进程来处理所有的连接。
- 当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
时间: 2024-10-12 18:26:06