分类
Apache Java 笔记

mod_jk奇怪的连接问题

最近进行了一次生产环境的迁移。原来的环境是做了虚拟化,所以迁移时把原来的虚拟机保持状态停用,再复制一份。但就是这么简单的理论上不会有问题的迁移,出现了奇怪问题。具体表现在,系统运行一段时间后tomcat无响应。
生产上的应用系统是使用apache+tomcat集群,所有的请求由apache的mod_jk转发至tomcat的apj13监听端口。系统运行一段时间后,tomcat无响应。tomcat1的apj13端口是8010,tomcat2的监听端口是8011。使用

netstat -nt|grep 8010|wc -l
netstat -nt|grep 8011|wc -l

查看到各有二百多个连接。

原因找了很久,是有连接没释放还是服务器没重启导致的?以前没有这种问题难道是因为现在数据大了,问题出来了?弄了好久的apache,包括修改perfork.c连接数,mod_jk配置超时时间,问题依旧。经过观查,apache主动连接到tomcat的数量不多,应该是apache到tomcat的连接断开,但tomcat没有释放引起的。无奈之下修改tomcat的最大连接数和连接超时时间。跟据tomcat的内存分配,把最大连接数设置成800没什么问题,超时时间为10分钟。打开tomcat1的配置文件——server.xml,把
<Connector port=”8010″ protocol=”AJP/1.3″ redirectPort=”8443″ />
修改为
<Connector port=”8010″ protocol=”AJP/1.3″ redirectPort=”8443″ />
重启tomcat1,再监控,发现连接数有增多有减少,一般在10个左右,闲时在5个左右。而tomcat2连接数有增无减,大概到100个的样子就开始没响应了。
按tomcat1的修改方法对tomcat2的配置进行同样修改,重启……到今天已经运行了2天,问题没有出现。

发表评论

电子邮件地址不会被公开。