开发者社区> 科技小先锋> 正文

解决tomcat死掉JK无法连接故障

简介:
+关注继续查看
 近日,发现网站jsp部分无法访问,或者访问速度极其缓慢。经过近二天的时间,问题得到了解决,现在把这解决步骤及思考方法详细的记录下来。其中也走了不少弯路。其结果也是让人无法琢磨!

网站简单架构:
squid-apache--php
      apache+tomcat(jk)--jsp


   发现问题时处理思路:
   1、检查服务器是否正常连接。掉网、死机啥的。--->SSH登录正常
   2、检查负载情况,load是否超高,vmstat 检查资源占用率 --->只有mysql占少量资源,起初以为是mysql导致(检查mysql 状态后发现并没有锁表及DDL语句堆积,执行sql语句速度也很快。因此判

断出不是mysql导致)
   3、查看tcp连接状态。是不是并发太大被拖死了--->其中ESTABLISHED大约有1000左右。TIME_WAIT CLOSE_WAIT 在40左右。看样子tomcat是被拖死了。并发这么大?
   4、重启了tomcat 访问正常了。先观察一段时间。
   5、查看分析日志,希望能从这里面找出一点蛛丝马迹来。
tomcat日志如下:
 error:All threads (150) are currently busy, waiting. Increase maxThreads (150) or check the servlet status 
提示我最大的线程数设置小了。那就按日志提示先加大点吧。

从网上找到如下一段:[url]http://tech.163.com/05/0711/10/1OCH7J2000091589_3.html[/url]
web server允许的最大连接数还受制于操作系统的内核参数设置,通常Windows是2000个左右,Linux是1000个左右。

那我先加到999再说。
修改server.xml 
<Connector port="80"
               maxThreads="999" minSpareThreads="25" maxSpareThreads="999"
               enableLookups="false" redirectPort="8443" acceptCount="999"
               debug="0" connectionTimeout="20000"
               disableUploadTimeout="true" />
改后重启tomcat   

漫长的等待! F5  刷新,结果还是让我很失望。tomcat还是不行。
   登录服务器查看,情况与半小时前一样。
   先重启了,保证页面能访问再说,上google也没有找到解决方案,继续查看日志,tomcat 就是些死掉的日志,没有其它的用处,这时查看到jk2的日志。发现了N多的问题。我想问题应该出在这。JK2

无法连接到tomcat了。然后显示tomcat已经over了
日志如下:
[error] ajp_connection_tcp_get_message::jk_ajp_common.c (951): (ajp13) can't receive the response message from tomcat, network problems or tomcat (127.0.0.1:8009) is down 

(errno=104)
[error] ajp_get_reply::jk_ajp_common.c (1592): (ajp13) Tomcat is down or refused connection. No response has been sent to the client (yet)
Connecting to tomcat failed. Tomcat is probably not started or is listening on the wrong port
带着问题G了一下,有一些优化配置方案:
官网的如下:
worker.worker2.lbfactor=50
worker.worker2.cachesize=10
worker.worker2.cache_timeout=600
worker.worker2.socket_keepalive=1
worker.worker2.socket_timeout=300 
别的文章可以不信,官网总得信呀。因此马上修改了
worker.properties 配置文件。
再一次重启tomcat
结果过了一段时间,问题又来了。tomcat还是down。如此再次修改worker.properties 配置文件,还是没有任何效果。
难道问题不是出在JK2? 

此后就一直被此问题困扰。后来经理给了些信息。

#worker.ajp13.lbfactor=1
lbfactor  property is used when working with a load balancer worker, this is the load-balancing factor for the worker. We'll see more on this in the lb worker section. 

#worker.loadbalancer.type=lb
#worker.loadbalancer.balance_workers=ajp13

# The loadbalancer (type lb) workers perform wighted round-robin
# load balancing with sticky sessions.
# Note:
#  ----> If a worker dies, the load balancer will check its state
#        once in a while. Until then all work is redirected to peer
#        workers.

也就是说先去掉tomcat集群配置选项,多余的选项一个都不要。免得造成轮循。
此后问题没有像之前那样频繁发生。相对稳定了许多。

目前tomcat已经稳定下来了。可量还是没有下来。因此还是需要做tomcat集群,以解决高端并发的问题。



本文转自守住每一天51CTO博客,原文链接:http://blog.51cto.com/liuyu/112271,如需转载请自行联系原作者

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
阿里云服务器怎么设置密码?怎么停机?怎么重启服务器?
如果在创建实例时没有设置密码,或者密码丢失,您可以在控制台上重新设置实例的登录密码。本文仅描述如何在 ECS 管理控制台上修改实例登录密码。
23609 0
从主机 Windows 上无法远程访问 Linux 的 Tomcat 服务器解决方法
当在 Linux 上配置好 Tomcat 服务器后,如果从主机中无法访问到 Linux 中的 Tomcat 服务器时,需要做如下的检查: 1. Tomcat 是否启动成功 在控制台输入: ps -ef | grep tomcat 命令含义:从当前所有进程中查找是否含...
2960 0
解决tomcat引入spring容器出错
错误1: log4j:WARN Please initialize the log4j system properly. 2013-1-15 20:22:28 org.apache.catalina.core.StandardContext filterStart 严重: Exception starting filter struts2 Class: com.opensympho
1394 0
配置Tomcat解决URL传参引出的中文乱码问题
                         今天在写一个JSP页面时候,发现下面报错: 测试URL传参     通常情况下,通过使用contentType和下面的就可以解决传参过程中的中文乱码问题,但是貌似URL传参还要设备别的东西。
1059 0
Eclipse启动Tomcat时,45秒超时解决方式
  在Eclipse中启动Tomcat服务器时,经常由于系统初始化项目多,导致出现45秒超时的Tomcat服务器启动错误。     以前我一般通过找到XML配置文件,将对应Timeout为45的值,修改为认为足够大来解决问题。
557 0
阿里云服务器如何登录?阿里云服务器的三种登录方法
购买阿里云ECS云服务器后如何登录?场景不同,阿里云优惠总结大概有三种登录方式: 登录到ECS云服务器控制台 在ECS云服务器控制台用户可以更改密码、更换系.
29526 0
6965
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
JS零基础入门教程(上册)
立即下载
性能优化方法论
立即下载
手把手学习日志服务SLS,云启实验室实战指南
立即下载