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

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
日志服务 SLS,月写入数据量 50GB 1个月
简介:
 近日,发现网站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,如需转载请自行联系原作者

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。 &nbsp; 相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/mysql&nbsp;
相关文章
|
Apache Java 应用服务中间件
|
负载均衡 Java 应用服务中间件
|
Apache 应用服务中间件
struts2 表单 get 乱码问题/apache+tomcat+jk 乱码问题
转自:http://hi.baidu.com/coldair444/item/c569394c5824c3e7bdf45196 个人意见:该方法可行,但不推荐使用。   struts2表单为mode = get 结果action 接受的时候 居然是乱码。
768 0
|
3月前
|
缓存 Java 应用服务中间件
Spring Boot配置优化:Tomcat+数据库+缓存+日志,全场景教程
本文详解Spring Boot十大核心配置优化技巧,涵盖Tomcat连接池、数据库连接池、Jackson时区、日志管理、缓存策略、异步线程池等关键配置,结合代码示例与通俗解释,助你轻松掌握高并发场景下的性能调优方法,适用于实际项目落地。
549 5
|
6月前
|
Java 应用服务中间件 Linux
在Java 12环境中配置和部署Apache Tomcat的步骤。
这段部署Tomcat的冒险旅程充满技术挑战,但同时也像游戏一样充满乐趣。它需要你提前准备,仔细执行,并随时准备解决意外情况。成功后,你就可以在这匹强壮的网络野马上,带着你的Java应用,冲向Web开发的璀璨星空。
206 56
|
9月前
|
网络协议 Java 应用服务中间件
框架源码私享笔记(01)Tomcat核心架构功能 | 配置详解
本文首先分享了《活出意义来》一书序言中的感悟,强调成功如同幸福,不是刻意追求就能得到,而是全心投入时的副产品。接着探讨了Tomcat的核心功能与架构解析,包括网络连接器(Connector)和Servlet容器(Container),并介绍了其处理HTTP请求的工作流程。文章还详细解释了Tomcat的server.xml配置文件,涵盖了从顶级容器Server到子组件Connector、Engine、Host、Context等的配置参数及作用,帮助读者理解Tomcat的内部机制和配置方法。