httpd进程只增不减问题

apache2.2.1 mod_jk 两个apache-tomcat-6.0.20 负载均衡

 

 昨天突然页面访问慢,半天不响应,用下面的命令

 watch -n 1 -d "pgrep httpd|wc -l" 一看httpd 当前的进程数已经达到了最大值

 

 于是查看 apache 的工作模式是 ./apachectl -l

 

 是 prefork模式

 

一。修改/apache/conf/extra 目录下的 httpd-mpm.conf文件修改最大连接数量

 

    修改前:最大连接数是 150

   <IfModule mpm_prefork_module>
    StartServers          5
    MinSpareServers       5
    MaxSpareServers      10
    MaxClients          150
    MaxRequestsPerChild   0
 </IfModule>

 

修改后:

 

 <IfModule mpm_prefork_module>
    StartServers          5
    MinSpareServers       5
    MaxSpareServers      10
    ServerLimit         8000
    MaxClients          8000
    MaxRequestsPerChild   20
</IfModule>

 

二,修改workers.properties

 

 

 worker.list=jkstatus, loadbalancer ,tomcat1 ,tomcat2
worker.maintain=60
worker.jkstatus.type=status

worker.tomcat1.port=8009
worker.tomcat1.host=127.0.0.1
worker.tomcat1.type=ajp13
worker.tomcat1.lbfactor=1
worker.tomcat1.redirect=tomcat2
worker.tomcat1.socket_keepalive=True
worker.tomcat1.socket_timeout=60
worker.tomcat1.retries=20
worker.tomcat1.connection_pool_size=1000
worker.tomcat1.connection_pool_minsize=100
worker.tomcat1.connection_pool_timeout=60
worker.tomcat1.recovery_options=3

 

 

worker.tomcat2.port=8109
worker.tomcat2.host=127.0.0.1
worker.tomcat2.type=ajp13
worker.tomcat2.lbfactor=1
worker.tomcat2.redirect=tomcat1
worker.tomcat2.socket_keepalive=True
worker.tomcat2.socket_timeout=60
worker.tomcat2.retries=20
worker.tomcat2.connection_pool_size=1000
worker.tomcat2.connection_pool_minsize=100
worker.tomcat2.connection_pool_timeout=60
worker.tomcat2.recovery_options=3

worker.loadbalancer.type=lb
worker.loadbalancer.balanced_workers=tomcat1,tomcat2
worker.loadbalancer.retries=20
~

 

三,修改tomcat的配置文件server.xml

 

   <Connector port="8009" maxHttpHeaderSize="8192"
                maxThreads="1000" minSpareThreads="30" maxSpareThreads="50"
               acceptCount="1000"
               enableLookups="false" redirectPort="8443" connectionTimeout="60000"
               disableUploadTimeout="true"  protocol="AJP/1.3" URIEncoding="GBK"/>

修改之前这俩都是 150

 

 

然后重启两个tomcat,重启apache ,然后在用命令 watch -n 1 -d "pgrep httpd|wc -l" 查看当前httpd 进程数

 

不一会就回增到1k ,2k ,以上,查了半天原因,网上搜了半天也没找到原因,偶尔看了一个帖子,有个人也碰到过,后来

 

经查是mysql数据库的原因,由于我们的是程序先读缓存文件,然后异步在生成要访问的文件,所以在apache重启后,访

 

问页面特别快,所有就没往数据库这方面想,感觉数据库不会有什么问题

 

 

但是httpd进程还是一直增加,只有重启apache才能缓解,这个问题困扰了一天,周一早晨来后,有同事说动态接口一直

 

访问不了,但是别的度缓存文件的页面却很流畅,我本地起了下系统,访问动态接口,看日志一直 不动,连数据库那卡住

 

了,这次意识到真是数据库出了问题,赶紧联系db 查看数据库,原来数据库hang住了。

 

 

哎,之前一直不知道是啥原因,看来httpd激增不一定就是apache配置的问题,也应该从程序或数据库方面考虑。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

你可能感兴趣的:(apache,httpd进程只增不减)