apache2三种模式及参数调优

问题来源

如果访问量比较小,其实什么配置都没问题。在一些特殊场景下,例如促销活动,访问量会比较集中。峰值差不多能达到每秒1000到2000次的访问,而且还在继续增长中。

我们一直判断是数据库卡死的问题,后来发现,原来了服务器挂了。进一步定位,发现是apache接收了太多了请求,起了无数进程,内存用爆,机器卡死了。

如何配置apache,最大程度的发挥系统性能呢?

apache2三种模式

从2.0开始,apache引入了MPM(Multi-Processing Module,多进程处理模块)。MPM有prefork, worker和event(在2.4版本中稳定发布)模式,三种模式拥有不同的特点和性能。

prefork MPM

prefork是比较古老而又稳定的apache模式,特点是每个进程都是单线程,在一个时间点只能处理一个连接,需要启动大量的进程来处理高并发的请求。由于是单线程进程,因而无须考虑线程安全的问题,可以使用非线程安全的库,例如mod_php。

优点是成熟稳定,缺点是比较消耗内存,而且并发支持受限于进程数量,对高并发支持稍差。

worker MPM

worker同样使用多个进程,但每个进程又拥有多个线程,每个线程处理一个连接。由于线程是轻量级的,因而具有较高的并发性,同时,多个进程又获得了一定的稳定性。

worker模式特点是占用内存少,并发性比较高,缺点是必须考虑线程安全。如果使用了keep-alive方式,一个线程可能会被一直保持一个连接,但中间没有请求,直到超时。如果有多个线程被这样占据,在高并发场景下同样会出现无线程可用的情形。

event MPM

event模式是在2.4版本中才稳定发布的模式,它在worker的基础上,解决了keep-alive连接不能释放的问题。event MPM中,会有一个专门的线程来管理这些keep-alive类型的线程,当有真实请求过来的时候,将请求传递给服务线程,执行完毕后,又允许它释放。这样增强了高并发场景下的请求处理能力。

apache2 配置

apache服务器的性能,在很大程度上取决于参数配置。

首先,我们如何查看当前apache所采用的模式呢?可以通过下面的命令:

apachectl -V | grep -i mpm

接下来,针对相应的模式,进行配置。apache2的默认配置文件位于/etc/apache2/apache2.conf,不同模式对应的配置文件在/etc/apache2/mods-available/下,有mpm_prefork.conf, mpm_worker.conf和mpm_event.conf。

prefork MPM

mpm_prefork.conf文件内容如下:

<IfModule mpm_prefork_module>
    StartServers         10         # 启动时进程数
    MinSpareServers      5          
  • 3
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值