转载地址:http://www.blogjava.net/tedeyang/archive/2008/06/04/205740.html

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连接异常:

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异常:

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 Off

转载于:https://www.cnblogs.com/csshaw/p/4505746.html

【转载】Tomcat崩溃事件相关推荐

  1. TOMCAT崩溃事件

    TOMCAT崩溃事件 http://www.blogjava.net/tedeyang/archive/2008/06/04/205740.html 今天一大早产品一部项目经理就来找我,他们的一台服务 ...

  2. win11开机频繁刷新桌面,explorer报错 ntdll.dll应用程序崩溃事件

    一:出现原因 开机就会频繁刷新桌面,假死机状态,初步判断为系统问题,还没有完全解决的办法. 首先去查看一下启动日志: 其中大片的explorer报错,详细信息里面展示的是应用程序崩溃事件,引起的原因是 ...

  3. [转载]Tomcat+Mysql入门实例 滚动横幅广告

    Tomcat+Mysql入门实例 滚动横幅广告 创建自己的基于 Java 的滚动横幅广告 站长注:以前做过这个例子,不过好象是mysql4.012+tomcat 4 ,现在这两个软件都升级了,而且我自 ...

  4. 【转载】浏览器事件循环机制(event loop)

    首先,本文转自https://juejin.im/post/5afbc62151882542af04112d 当我看完菲利普·罗伯茨的 javascript event loop的演讲的时候,就对于事 ...

  5. [转载]tomcat的配置文件server.xml不支持中文注释的解决办法

    原文链接:http://tjmljw.iteye.com/blog/1500370 启动tomcat失败,控制台一闪而过,打开catalina的log发现错误指向了conf/server.xml,报错 ...

  6. 转载--tomcat整合apr

    原文地址: http://zhaosheng.wolf.blog.163.com/blog/static/115304589201212845341723/ APR(Apache Portable R ...

  7. [转载]Tomcat 6.0 安装配置

    [转自:http://blog.pfan.cn/suneveryday/34162.html] 第一步:下载j2sdk和tomcat:到sun官方站点     最新的jdk为1.6.04,tomcat ...

  8. tomcat 未指定服务器,[转载]Tomcat环境的建立

    Unix平台:如是bash/sh环境,键入:TOMCAT_HOME=foo/tomcat;export TOMCAT_HOME"如是tcsh环境,键入:setenv TOMCAT_HOME ...

  9. [转载]c#委托事件简单例子

    c#委托事件简单例子 2009-05-11 10:57 一.委托委托类似于函数指针,但函数指针只能引用静态方法,而委托既能引用静态方法,也能引用实例方法. 委托使用分三步:1.委托声明.2.委托实例化 ...

最新文章

  1. maven如何在eclipse上加载
  2. 运维监控系统——配置服务监控项(Http,Nginx,MySQL)
  3. python3中的一些小改动
  4. BASIS--如何删除开发用户的开发Key
  5. Image and video pencil sketch with OpenCV 3.X and CUDA
  6. Tensorflow中文文档
  7. 上传附件删除、session清空问题
  8. pyqt,Qt Designer 界面布局子窗口可移动
  9. 这两天说到的苹果软件中毒是个什么情况?
  10. 为什么手机用久了,就不那么流畅了,啥原因?
  11. Ubuntu 8.04 Hardy LTS 软件源设置
  12. 深入剖析WebRTC事件机制之Sigslot
  13. python能做什么工作-谁适合学Python?学了Python可以做什么工作?
  14. 程序员操作系统推荐_程序员的这些问题,竟然在工作后才发现!
  15. Linux内核源代码 学习笔记
  16. python中print的用法_Python中print用法里面% ,%s 和 % d 代表的意思
  17. 5V单端差分信号编码器转脉冲24V电平集电极开路变送器
  18. linux基础——信号阻塞及未决信号
  19. 全球首位亿万富豪上太空!
  20. 光纤的模式-单模和多模

热门文章

  1. 长微博工具:菊子曰自动微博文字转图片,突破微博140字限制,一键发布完成...
  2. 学习要趁早,专栏上新,早鸟订阅送图书【活动结束】
  3. NB-IoT网络部署
  4. mysql update 负数_解决并发情况下库存减为负数问题--update2016.04.24
  5. 顺序结构、选择结构、循环结构
  6. 4. 卷积神经网络CNN
  7. 软件工程中软件需求分析
  8. Android 7.0 Nougat(牛轧糖)---对开发者来说
  9. 2021年亚太地区15个最佳职场榜单;人均养老消费预期将超百万元;高净值人群财富传承方式依然首选保险 | 美通社头条...
  10. 【电力电子技术】 THE FLYBACK 电路