四海艺文

 找回密码
 欢迎注册

QQ登录

只需一步,快速开始

查看: 2512|回复: 0

MaxRequestsPerChild参数设置不当导致并发连接过高

[复制链接]

787

主题

3880

帖子

4万

积分

站务管理

技术管理员

Rank: 12Rank: 12Rank: 12

积分
41627
发表于 2011-5-22 23:10:17 | 显示全部楼层 |阅读模式
ubuntu-linux中apache的MaxRequestsPerChild参数设置不当导致并发连接过高

  inJava经验之谈:从网络上搜索到一篇文章,说加大 MaxRequestsPerChild 可以促使增加子进程的复用,从而提高效率。不记得那篇文章是否提到了其使用的 Apache 的 MPM ,版本是 2.0 的没错,反正不是 woker 就是 prefork 了。

我使用的 prefork ,参考那篇文章,将 MaxRequestsPerChild 由 300 调整到了 3000 。

结果,后两天的监控结果是,在网站访问期的高峰期,服务器负荷很重,数据库的并发连接频频超过最高限制。Apache 的并发连接也几乎一直保持在最高,网站访问速度很慢,频繁出现访问超时的问题。

最开始以为是网站访问量过大,达到服务器硬件极限导致的正常现象,不过,手动重启 Apache 后,数据库并发连接迅速降低,之后缓慢增加,一直达到最高并发连接限制,并且很长时间无法减小。

之后,认为是数据库并发连接过高,导致系统负荷过大,而 Apache 过多的 KeepAlice 连接导致数据库的并发连接无法及时释放从而消耗大量系统资源,导致系统负荷过重。

最后,怀疑到 MaxRequestsPerChild 的 300 设置是否合理。

阅 读 Apache 手册关于 MaxRequestsPerChild 的说明后,认为 prefork 下,KeepAlice 开启的情况下,每一个新连接都会导致一个 Apache 子进程开启, MaxRequestsPerChild 设置过大,导致新连接产生新的子进程后,长期 idle ,这样并不一定合理。

根据网站的访问情况,并不需要那么大的 MaxRequestsPerChild ,客户端和 Apache 采用 http 进行连接,网站都是一些大小不大的文件,客户端在和 Apache 服务器数次交互后,就应该完成一次访问了,用户点击网站的频率也不会那么高,所以 MaxRequestsPerChild 不应该设置那么高,而应该设置低一些,以尽快释放数据库连接,尽快回收系统资源,以尽可能快速的满足新的请求的连接需求。

将 MaxRequestsPerChild 重新调整回默认的 300 ,情况有所改观。

最后,就像那句古话所说的,尽信书不如无书,换到互联网上也一样。不能盲目的参考网上的资料,特别是非严格发表的个人经验文档。网上的资料始终都只能作为参考,必须要经过自己的理解,再结合实际情况,进行调整。不然,导致的结果可能是无法预计的。

来源:http://hi.baidu.com/injava/blog/ ... 0307c1a6ef3ff0.html 整理:shyw.net
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 欢迎注册

本版积分规则

手机版|联系我们|四海艺文 ( 粤ICP备19029400号 湘公网安备 43122302000013号  

GMT+8, 2020-2-22 05:26 , Processed in 0.128693 second(s), 44 queries .

©2007-2015 四海艺文

站点导航:四海.net

快速回复 返回顶部 返回列表