Tomcat假死的原因分析及解决方案

 更新时间:2023年12月18日 10:06:50   作者:江渚渔樵上  
这篇文章主要介绍了Tomcat假死的原因分析及解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

Tomcat假死的原因分析及解决

在参与搜人项目时,遇到tomcat假死的问题。

当时情况:

1、ps tomcat正在运行

2、用netstat 查看8080连接情况,有大量的close-wait,还有一些等待连接的状态

3、查看服务器的使用情况,没有过多的消耗内存和CPU

4、重新加载界面,没有报错,只是显示加载失败

5、加载时看到tomcat 日志报错 out of memary

在网上查看资料,问题得到解决

服务器配置:linux+tomcat

现象:Linux服务器没有崩,有浏览器中访问页面,出现无法访问的情况,没有报4xx或5xx错误(假死),并且重启tomcat后,恢复正常。

原因:tomcat默认最大连接数(线程数)200个,默认每一个连接的生命周期2小时(7200秒),tomcat使用http 1.1协议,而http1.1默认是长连接。

tomcat接受处理完请求后,socket没有主动关闭,因此如果在2小时内,请求数超过200个,服务器就会出现上述假死现象。

解决方案1

及时断开socket

解决方案2

修改tomcat配置文件,修改最大连接数(增大)

修改server.xml配置文件,Connector节点中增加acceptCount和maxThreads这两个属性的值,并且使acceptCount大于等于maxThreads:

protocol="org.apache.coyote.http11.Http11NioProtocol"
<Connector port="8080" protocol="HTTP/1.1"
            connectionTimeout="20000" 
           redirectPort="8443" acceptCount="500" maxThreads="400" />

解决方案3

修改linux的TCP超时时间(socket生命周期)限制

vi /etc/sysctl.conf
# Decrease the time default value for tcp_fin_timeout connection
net.ipv4.tcp_fin_timeout = 30
# Decrease the time default value for tcp_keepalive_time connection
net.ipv4.tcp_keepalive_time = 1800
# 探测次数
net.ipv4.tcp_keepalive_probes=2
# 探测间隔秒数
net.ipv4.tcp_keepalive_intvl=2
 
编辑完 /etc/sysctl.conf,要重启network 才会生效
[root@temp /]# /etc/rc.d/init.d/network restart

总结 

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Tomcat报错: JDBC unregister 解决办法

    Tomcat报错: JDBC unregister 解决办法

    这篇文章主要介绍了Tomcat报错: JDBC unregister 解决办法的相关资料,需要的朋友可以参考下
    2017-05-05
  • Tomcat日志自动分割的三种方法

    Tomcat日志自动分割的三种方法

    本文主要介绍了Tomcat日志自动分割的三种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-07-07
  • Tomcat在linux环境中开机自启(定时重启)的方法

    Tomcat在linux环境中开机自启(定时重启)的方法

    我们经常会遇到服务器断电或异常,而异常后tomcat中部署的web项目需要我手动去启动,为此,特别贡献出Linux环境中Tomcat开机自启的方式供学习使用,需要的朋友可以参考下
    2023-10-10
  • 使用TomCat,service输出台出现乱码的解决

    使用TomCat,service输出台出现乱码的解决

    本文介绍了解决Tomcat服务输出台中文乱码问题的两种方法,第一种方法是修改`logging.properties`文件中的`prefix`和`encoding`参数;第二种方法是配置IDEA的VMoptions和文件编码设置,通过这两种方法,可以有效解决Tomcat服务输出台出现的乱码问题
    2025-01-01
  • Tomcat配置虚拟主机的实现示例

    Tomcat配置虚拟主机的实现示例

    在Tomcat中配置虚拟主机允许你通过不同的域名或IP地址访问同一台服务器上的不同Web应用,这通常通过编辑Tomcat的配置文件server.xml来实现,本文就来介绍一下,感兴趣的可以了解一下
    2024-11-11
  • Tomcat之web应用的目录组成结构_动力节点Java学院整理

    Tomcat之web应用的目录组成结构_动力节点Java学院整理

    这篇文章主要介绍了Tomcat之web应用的目录组成结构,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-07-07
  • docker安装Tomcat 404问题的解决方案

    docker安装Tomcat 404问题的解决方案

    这篇文章主要介绍了docker安装Tomcat 404问题的解决方案,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-10-10
  • Tomcat假死的原因分析及解决方案

    Tomcat假死的原因分析及解决方案

    这篇文章主要介绍了Tomcat假死的原因分析及解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-12-12
  • IIS Tomcat共享80端口的解决方案

    IIS Tomcat共享80端口的解决方案

    这篇文章主要介绍了IIS Tomcat共享80端口的解决方案,需要的朋友可以参考下
    2017-08-08
  • Tomcat的卸载和重装的实现(图文)

    Tomcat的卸载和重装的实现(图文)

    这篇文章主要介绍了Tomcat的卸载和重装的实现(图文),文中通过图文介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-08-08

最新评论