使用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

时间: 2024-10-12 18:26:06

使用Apache worker MPM 来提高passenger 性能的相关文章

apache worker性能调优

worker的工作原理及配置  相对于prefork,worker是2.0 版中全新的支持多线程和多进程混合模型的MPM.由于使用线程来处理,所以可以处理相对海量的请求,而系统资源的开销要小于基于进程的服务器.但是,worker也使用了多进程,每个进程又生成多个线程,以获得基于进程服务器的稳定性.这种MPM的工作方式将是Apache 2.0的发展趋势.  在configure -with-mpm=worker后,进行make编译.make install安装.在缺省生成的httpd.conf中有

HTTP/2 服务器推送(Server Push)教程(HTTP/2 协议的主要目的是提高网页性能,配置Nginx和Apache)

HTTP/2 协议的主要目的是提高网页性能. 头信息(header)原来是直接传输文本,现在是压缩后传输.原来是同一个 TCP 连接里面,上一个回应(response)发送完了,服务器才能发送下一个,现在可以多个回应一起发送. 服务器推送(server push)是 HTTP/2 协议里面,唯一一个需要开发者自己配置的功能.其他功能都是服务器和浏览器自动实现,不需要开发者关心. 本文详细介绍服务器推送的原理和配置方法. 一.传统的网页请求方式 下面是一个非常简单的 HTML 网页文件index.

【转】提高PHP性能的53个技巧

PHP技巧汇总:提高PHP性能的53个技巧用单引号代替双引号来包含字符串,这样做会更快一些.因为PHP会在双引号包围的字符串中搜寻变量,单引号则不会,注意:只有echo能这么做,它是一种可以把多个字符串当作参数的函数译注:PHP手册中说echo是语言结构,不是真正的函数,故把函数加上了双引号).1.如果能将类的方法定义成static,就尽量定义成static,它的速度会提升将近4倍.2.$row[*id]*的速度是$row[id]的7倍.3.echo 比 print 快,并且使用echo的多重参

使用 libevent 和 libev 提高网络应用性能

使用 libevent 和 libev 提高网络应用性能 Martin C. Brown, 作家, Freelance 简介: 构建现代的服务器应用程序需要以某种方法同时接收数百.数千甚至数万个事件,无论它们是内部请求还是网络连接,都要有效地处理它们的操作.有许多解决方案,但是 libevent 库和 libev 库能够大大提高性能和事件处理能力.在本文中,我们要讨论在 UNIX® 应用程序中使用和部署这些解决方案所用的基本结构和方法.libev 和 libevent 都可以在高性能应用程序中使

apache的mpm工作模式

查看Apache工作模式的命令是: [[email protected] httpd-2.2.32]# /usr/local/apache2/bin/apachectl -M [[email protected] ~]# /usr/local/apache2/bin/apachectl -M Loaded Modules: core_module (static) authn_file_module (static) authn_default_module (static) authz_hos

PHP提高网站性能的一些方法

前段时间面试问到了这个问题,回答的不是很全面,就去问了度娘,得到了一些比较全的答案,由于出处较多就没法确定原文出处了.下面是分享的答案. 一.大型网站性能提高策略: 大型网站,比如门户网站,在面对大量用户访问.高并发请求方面,基本的解决方案集中在这样几个环节:使用高性能的服务器.高性能的数据库.高效率的编程语言.还有高性能的Web容器.这几个解决思路在一定程度上意味着更大的投入. web容器是一种服务程序,在服务器一个端口就有一个提供相应服务的程序,而这个程序就是处理从客户端发出的请求,如Jav

小计使用多线程和gevent来提高celery性能及稳定性

前言: 有朋友问我,我那个任务队列是怎么实现,他的疑问其实主要是celery不支持多线程.先说说我那实现的方法,其实我的做法和celery.rq这样的框架很像的,都是把任务push到队列里面,然后pull取出任务而已,celery里面还可以取任务,我这个是通过传送uuid来实现的.   朋友问celery不支持多线程,那是他没有好好看文档.celery是支持多任务并发的,哎... 好好看文档呀. 原文:http://rfyiamcool.blog.51cto.com/1030776/153082

PHP 提高PHP性能的编码技巧以及性能优化

0.用单引号代替双引号来包含字符串,这样做会更快一些.因为PHP会在双引号包围的字符串中搜寻变量,单引号则不会,注意:只有echo能这 么做,它是 一种可以把多个字符串当作参数的“函数”(译注:PHP手册中说echo是语言结构,不是真正的函数,故把函数加上了双引号). 1.如果能将类的方法定义成static,就尽量定义成static,它的速度会提升将近4倍. 2.$row[’id’] 的速度是$row[id]的7倍. 3.echo 比 print 快,并且使用echo的多重参数(译注:指用逗号而

apache中mpm分析

1.什么是MPM? Multi-Processing Module (MPM) implements a hybrid multi-process multi-threaded server.(多进程.多线程) 2.有多少种MPM? 大致有:prefork MPM.worker MPM.BeOS MPM.NetWare MPM.OS/2 MPM.WinNT MPM. 3.怎么知道apache当前用的是哪个MPM? linux及windows下都可以使用命令:"httpd -l " 进行