浏览 7649 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2009-08-11
一、发现演示站有时候会无响应,浏览器不报错,但一直等待。这时用ps aux|grep http|wc -l命令查看apache进程数,发现为150,这是apache默认的最大连接数,于是修改httpd.conf,将MaxKeepAliveRequests设为1000,使用命令apache2ctl -k restart重启apache使配置生效。 二、重启后演示站可以正常运行,但几个小时之后,又停止响应,浏览器一直等待。这时查看apache进程数,发现还是150。 三、于是检查Tomcat的Server.xml,发现AJP端口的最大线程数不对,于是修改如下: <Connector URIEncoding="GBK" port="8009" maxThreads="1000" minSpareThreads="25" maxSpareThreads="250" enableLookups="false" redirectPort="8443" acceptCount="500" debug="0" connectionTimeout="600000" disableUploadTimeout="true" protocol="AJP/1.3" /> 四、重启Tomcat运行几个小时后,又出现故障,现象如前,在150个进程时停止响应。于是又修改httpd.conf中的perfork部分: <IfModule prefork.c> StartServers 5 MinSpareServers 5 MaxSpareServers 100 ServerLimit 1000 MaxClients 1000 MaxRequestsPerChild 10 </IfModule> 五、重启apache后问题依旧,没辙了,找来找去,终于在mod_jk.log中找到了线索,其中 有这样的错误信息: ajp_send_request::jk_ajp_common.c (1244): (tomcat1) increase the backend idle connection timeout or the connection_pool_minsize 六、于是四处搜资料,得知需要修改workers.properties,按照网上文章,加入如下行: worker.tomcat1.connection_pool_size=1000 worker.tomcat1.connection_pool_minsize=250 worker.tomcat1.connection_pool_timeout=600 七、重启后问题依旧,再搜,发现还需要在workers.properties中如下行: worker.tomcat1.socket_timeout=20 八、重启后问题解决,运行一天以后进程数依然只有80个。 问题虽然解决了,但自己对Apache和JK_Mod不精通,有些参数只是看到了就拿来改改试试,不求甚解。因此还有一些疑惑: 一、在另一个站点上使用了默认的workers.properties,没有加connection_pool_size等参数,但访问量明显比我们公司的网站大,却一直运行良好。怀疑跟我们公司网站上提供了几个大文件下载有关,但没有证实。 二、在没有加上worker.tomcat1.socket_timeout=20之前,所有的进程/线程数相关的参数都已经改了,但依然在达到150个进程时停止响应,原因不明。 三、在没有加上worker.tomcat1.socket_timeout=20之前,进程数几小时内就会达到150,但加上以后进程数增长得较为缓慢,一天以后都只有80,原因不明。 看来得找时间好好研究一下Apache和JK_Mod了。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |