`
tedeyang
  • 浏览: 326165 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Tomcat崩溃事件

阅读更多
今天一大早产品一部项目经理就来找我,他们的一台服务器昨天晚上tomcat服务崩溃,还不能重启服务,最后将服务器重启才OK。
我将事件过程和分析过程记录如下:

服务器:win 2000 sp4,apache 2 + tomcat 5.0 采用mod_jk级联。内存2G,硬盘剩余空间充足,CPU基本空闲。
主要应用:J2EE 1.4,JDBC(连接另一台mysql服务器)
崩溃时间: 2008-6-3 18:37:50

一.各种日志综合如下:

   1.37分45秒,操作系统事件中诺顿杀毒软件报内存过低警报
   2.37分45秒,web应用抛出JDBC连接异常:
<!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>-->2008-06-03 18:37:45 cn.*.db.DBManager.getConnection(DBManager.java:157) ERROR swim.db.DBManager   com.mysql.jdbc.CommunicationsException: Communications link failure due to underlying exception:
** BEGIN NESTED EXCEPTION **
java.net.SocketException
MESSAGE: java.net.SocketException: No buffer 
space available (maximum connections reached?): JVM_Bind

   3.37分50秒,tomcat抛出session无法save异常:
<!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>-->2008-06-03 18:37:50 ERROR- IOException while saving persisted sessions: java.io.FileNotFoundException: \izzs\SESSIONS.ser (系统资源不足,无法完成请求的服务。)
java.io.FileNotFoundException: \izzs\SESSIONS.ser (系统资源不足,无法完成请求的服务。)
    at java.io.FileOutputStream.open(Native Method)
    at java.io.FileOutputStream.
<init>(FileOutputStream.java:179)
    at java.io.FileOutputStream.
<init>(FileOutputStream.java:70)
    at org.apache.catalina.session.StandardManager.doUnload(StandardManager.java:
511)
    at org.apache.catalina.session.StandardManager.unload(StandardManager.java:
485)
    at org.apache.catalina.session.StandardManager.stop(StandardManager.java:
687)
    at org.apache.catalina.core.StandardContext.stop(StandardContext.java:
4496)
    at org.apache.catalina.core.StandardContext.reload(StandardContext.java:
3037)
    at org.apache.catalina.core.StandardContext.backgroundProcess(StandardContext.java:
4658)
    at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:
1619)
    at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:
1628)
    at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:
1628)
    at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.run(ContainerBase.java:
1608)
    at java.lang.Thread.run(Thread.java:
534)

二.简单分析

崩溃原因:内存不足导致资源不足,引起Tomcat的session崩溃。
  这台服务器上运行着很多应用,是什么原因引起内存不足还无法确定。
初步判断罪魁祸首可能是apache,该进程平常占用500MB内存,经常会飚到1G以上。

Apache2的配置文件中:KeepAlive=On,MaxKeepAliveRequests=100,KeepAliveTimeout=15,分析aceess.log文件可以发现每个页面触发的request数量在10个以下,点击率较低,可能使连接过多。
我建议将keepAlive设为off,增加CPU负载,降低内存消耗。

三.效果

 有待观察......

参考资料:
http://www.withend.com/post/78.html

四.结局
时隔一天,晚上九点再次崩溃,黑暗事件重演。
这一次,我才得知原来该apache还配置有其他域名,于是调出该域名下的access.log。项目经理去了机房,在轰轰地风扇声中打电话给我,让我分析分析。
仔细看访问日志,发现原来有N多Connect 443连接,443是什么?是SSL端口!HTTPS!,Connect命令则显然是代理功能!
而且这些connect的IP来自全球各地,加拿大、美国、澳洲、新西兰、北京、上海、英国、哪都有。
看来这台服务器是被人当代理服务器用了。
怪不得半夜会死机,人家西半球那时正大白天撒欢儿呢。

问题就出在apache的配置上,由于应用众多,并且这台服务器还是其他几台web服务器的对外出口,因此apache中配置了反向代理,不过不小心把正向代理(mod_proxy模块的ProxyRequests指令)也打开了。
看看apache2.0的官方文档中mod_proxy部分,里面明明白白写着:
警告
在您没有对服务器采取安全措施之前,请不要用ProxyRequests启用您的代理。一个开放的代理服务器不仅对您的网络有威胁,对整个因特网来说也同样如此。
真的是很有威胁!大量代理请求急剧消耗内存,最终造成死机!

解决办法就是把正向代理关掉:ProxyRequests Off


分享到:
评论

相关推荐

    tomcat崩溃自启动

    【标题】"Tomcat崩溃自启动"涉及到的关键技术点包括Tomcat服务器的管理、Windows操作系统下的脚本编程以及服务监控。Tomcat是Apache软件基金会的一个开源项目,它是一个流行的Java应用服务器,常用于部署和运行Web...

    Zabbix实现监控tomcat,自动启动崩溃tomcat.zip_tomcat_tomcat运行监控_vastgi7_zabb

    本篇将深入探讨如何利用Zabbix来实现对Tomcat应用服务器的监控,并在Tomcat出现崩溃时自动进行重启,确保业务连续性。 首先,我们需要理解Zabbix的基本架构。Zabbix由三部分组成:Zabbix Server、Zabbix Proxy和...

    tomcat自动关闭原因

    - **线程池配置**:Tomcat的线程池配置不当,如最大线程数设置过小,当并发请求过多时,无法及时处理所有请求,最终可能导致Tomcat服务崩溃。 ### 2. 操作系统资源限制 操作系统层面的资源限制也是Tomcat自动关闭...

    apache-tomcat-7.0.68

    Apache Tomcat 7.0.68 是一个广泛使用的开源软件,它是一个符合Java Servlet和JavaServer Pages(JSP)规范的应用服务器,主要用于部署和运行Java Web应用程序。Tomcat是Apache软件基金会Jakarta项目的一部分,它以...

    tomcat服务进程守护

    描述中提到的“自动重启已挂掉的tomcat服务器,省去人工人力,保证服务器的正常运行”,意味着通过自动化机制,可以避免因为Tomcat崩溃导致的服务中断,同时减少管理员的维护工作量。这不仅提高了服务的可用性,也...

    自动监控 Windows平台Tomcat运行监控并自动重启

    4. **资源限制**:合理配置Tomcat的JVM参数,如堆大小和线程池大小,避免资源耗尽导致服务崩溃。 总之,Windows平台上对Tomcat的自动监控和重启是一个关键的运维任务,通过定制脚本或使用专业监控工具,可以有效地...

    TOMCAT自动检测重启

    6. **测试和优化**:测试脚本的可靠性,根据实际情况调整检查频率和重试策略,以确保在TOMCAT崩溃时能够及时恢复。 自动检测和重启TOMCAT的功能能有效减少服务中断,提高系统的可用性和稳定性。通过合理配置,我们...

    Tomcat协同配置参考

    这有助于避免因内存不足导致的性能问题或应用程序崩溃。 3. **Apache转发策略配置**: 使用`JkMount`指令,Apache可以将特定URL请求转发到Tomcat处理。例如,所有以`.do`和`.jsp`结尾的请求会被转发到名为`ajp13`...

    Tomcat7.0.28 for windows

    它的稳定性意味着即使在高负载情况下,Tomcat也能保持可靠的服务,不易崩溃或出现性能问题。对于开发者来说,Tomcat 7的配置相对简单,使得部署和管理Java Web应用变得更加便捷。 【标签】"Tomcat"进一步强调了讨论...

    自动重启Tomcat脚本

    然而,由于各种原因,如内存溢出、系统崩溃或配置错误,Tomcat可能会意外停止运行。为确保服务不间断,可以创建自动重启脚本来监测和恢复Tomcat的状态。下面我们将详细讨论如何实现这个功能,以及提供的两个脚本的...

    tomcat8.0.36

    - 设置合理的内存参数,防止Tomcat在运行时因内存不足而崩溃。 以上就是关于Tomcat 8.0.36和Eclipse 4.4.1集成的相关知识点,这些内容对于Java Web开发者来说非常关键,能够帮助他们高效地开发和测试Web应用。

    Shell脚本定时监控tomcat,服务挂掉自动重启

    Shell脚本定时监控tomcat,服务挂掉自动重启

    myEclipse6.5+Tomcat7 搭建环境

    - **内存溢出问题**:调整JVM的堆大小参数(Xms、Xmx),避免因内存不足导致的应用崩溃。 #### 六、总结 通过上述步骤,我们可以成功地在myEclipse6.5环境中集成Tomcat7,并解决了常见的启动错误问题。这对于进行...

    Server_Tomcat 8.0.21

    在【标题】"Server_Tomcat 8.0.21"中,我们关注的是Tomcat的特定版本8.0.21,这个版本被描述为"很稳定",这意味着它经过了充分的测试和优化,能够提供可靠的服务,减少系统崩溃和数据丢失的风险。 **核心特性** 1....

    tomcat6.0.48+jdk1.7或jdk1.8或jdk1.6

    7. **内存设置**:调整JVM的内存分配,如`Xms`和`Xmx`,可以防止Tomcat因内存不足而崩溃。 对于运维人员来说,了解如何在不同JDK版本下配置和运行Tomcat是至关重要的,因为不同的JDK版本可能会影响应用程序的兼容性...

    tomcat6.0 修改启动内存设置 java jvm参数配置

    这不仅可以提升应用程序的性能,还能有效避免因内存不足而导致的应用崩溃或性能下降等问题。本文将详细介绍如何在 Tomcat 6.0 中修改启动内存设置以及配置 Java 虚拟机 (JVM) 的相关参数。 #### 二、JVM 内存参数...

    成功使用的tomcat

    此外,合理配置JVM参数,如`-Xms`和`-Xmx`来设定堆内存大小,有助于防止因资源不足导致的崩溃。 Tomcat还可以与其他服务器如Apache HTTP Server集成,实现负载均衡和更好的性能。通过Apache的mod_proxy模块,可以将...

    tomcat7.07

    3. **稳定性**:作为稳定版本,7.0.70在性能和稳定性上进行了优化,减少了应用程序在运行过程中的崩溃和错误,为开发者提供了一个可靠的运行环境。 4. **配置与管理**:Tomcat 7.0.70提供了一套灵活的配置机制,...

    TOMCAT内存溢出之解决方法

    Tomcat内存溢出是指Tomcat服务器在处理大数据量时出现的内存溢出错误,导致系统崩溃或返回HTTP状态码500的错误页面。本文将详细介绍Tomcat内存溢出之解决方法,包括问题分析、解决方法和结论。 问题分析: Tomcat...

Global site tag (gtag.js) - Google Analytics