上周五(10/7/2011),我们开始让httpd.worker进程在1-2分钟内从典型的10-15M内存增长到10G +(千兆字节)。 这显然会导致服务器停止,因为它开始交换等。我们必须重新启动服务器,以使其再次运行。 如果我们赶上它,我们可以杀死冒犯的httpd.worker,一切都很好。
系统
症状
补充笔记
问题
Apache / mod_jk / Tomcat(JbossWeb)configuration
从httpd.conf …
<IfModule worker.c> StartServers 2 MaxClients 500 MinSpareThreads 25 MaxSpareThreads 150 ThreadsPerChild 50 MaxRequestsPerChild 250 </IfModule>
从mod_jk的worker.properties …
# Define Node1 worker.node1.port=8009 worker.node1.host=127.0.0.1 worker.node1.type=ajp13 worker.node1.lbfactor=1 worker.node1.connection_pool_timeout=60 worker.node1.connection_pool_size=35 worker.node1.connect_timeout=5000 worker.node1.prepost_timeout=5000
从tomcat的server.xml …
<Connector protocol="AJP/1.3" port="8009" address="${jboss.bind.address}" redirectPort="8443" maxThreads="350" connectionTimeout="60000" enableLookups="false"/>
将不胜感激任何投入!
我们有官方发现并解决了这个问题,这只是我们mod_rewrite规则中的一个循环。 它已经存在好几个月了,但是没有人触及导致这个问题的特定URL。 所以至less有一个例子可能导致一个单一的httpd.worker进程在内存消耗上失控。