【转载】Tomcat崩溃事件

时间:2022-09-06 18:20:09

转载地址: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部分,里面明明白白写着:

【转载】Tomcat崩溃事件警告
【转载】Tomcat崩溃事件在您没有对服务器采取安全措施之前,请不要用ProxyRequests启用您的代理。一个开放的代理服务器不仅对您的网络有威胁,对整个因特网来说也同样如此。
【转载】Tomcat崩溃事件

真的是很有威胁!大量代理请求急剧消耗内存,最终造成死机!

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

【转载】Tomcat崩溃事件的更多相关文章

  1. tomcat的事件监听

    //事件涉及的三个组件:事件源.事件对象.事件监听器 //一个总的事件监听器接口,所有不同分类的事件监听器都继承这个接口 public interface EventListener {} //例如  ...

  2. (转载)JS事件监听 JS&colon;attachEvent和addEventListener使用方法

    (转载)http://www.chhua.com/web-note146 attachEvent和addEventListener使用方法 Js代码 <html> <head> ...

  3. 转载: jQuery事件委托&lpar; bind&lpar;&rpar; &bsol; live&lpar;&rpar; &bsol; delegate&lpar;&rpar;&rpar; &lbrack;委托 和 绑定的故事&rsqb;

    转载:http://blog.csdn.net/zc2087/article/details/7287429 随着DOM结构的复杂化和Ajax等动态脚本技术的运用,事件委托自然浮出了水面.jQuery ...

  4. &lbrack;转载&rsqb;Tomcat部署与配置

    转载来源: http://ibash.cc/frontend/article/2/ 感觉挺好的  自己之前总是怕麻烦 其实是水平不够. 一句话介绍Tomcat Tomcat是一个免费的开源的Web应用 ...

  5. 转载 Tomcat集群配置学习篇-----分布式应用

    Tomcat集群配置学习篇-----分布式应用 现目前基于javaWeb开发的应用系统已经比比皆是,尤其是电子商务网站,要想网站发展壮大,那么必然就得能够承受住庞大的网站访问量:大家知道如果服务器访问 ...

  6. 记一次系统崩溃事件【Mac版】

    事件:Mac系统崩溃,导致电脑数据丢失,以及数据安全备份措施的不到位的教训! 解决措施: 1.开机后按:Command+R 按开机键 ,进入Mac 实用工具, 选择磁盘工具.由于没有备份直接抹掉磁盘. ...

  7. &lbrack;转载&rsqb;tomcat的配置文件server&period;xml不支持中文注释的解决办法

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

  8. 转载&colon;Tomcat的JVM设置和连接数设置

    Windows环境下修改“%TOMCAT_HOME%\bin\catalina.bat”文件,在文件开头增加如下设置:set JAVA_OPTS=-Xms256m -Xmx512m Linux环境下修 ...

  9. Tomcat崩溃

    参考: http://bbs.csdn.net/topics/390391810?page=1 自己遇到的: --------------------------------------------- ...

随机推荐

  1. 关于ICE

    转自:http://wenda.chinabaike.com/b/38322/2013/1103/614756.html 一.ICE产生的背景 基于信令协议的多媒体传输是一个两段式传输.首先,通过信令 ...

  2. Android的几种alert对话框

    @Override public void onClick(View v) { switch (v.getId()) { case R.id.d1: AlertDialog.Builder build ...

  3. linux下安装MySQL5&period;6记录

    把之前装的mysql卸载了,准备重新用代码包装一遍,问了一下公司的DBA,他推荐给我mysql-5.6.16版本,说这个版本比较稳定. 按照网上的教程安装,结果就少文件,我还在找原因的时候,同事来找我 ...

  4. 由命名空间函数而引发思考--js中的对象赋值问题

    最近没有编码任务,作为一个才毕业的小辣鸡,给的任务就是看一下公司的新系统,熟悉怎么用哪些地方是干什么的. 下午喝了两杯水,感觉有点浪.然后就开始看了下代码.发现有一个函数是这样子的. var TX = ...

  5. 转&colon; 用css把图片转为灰色图

    小tip: 使用CSS将图片转换成黑白(灰色.置灰) by zhangxinxu from http://www.zhangxinxu.com本文地址:http://www.zhangxinxu.co ...

  6. hdu 4342 History repeat itself&lpar;数学题&rpar;

    题目链接:hdu 4342 History repeat itself 题意: 让你找第a个非完全平方数m,并且求前m个数的开方向下取整的和. 题解: 第一个问题: 假设第a个非平方数是X,X前面有n ...

  7. UINavigationBar统一修改导航条样式

    #pragma mark -- 统一导航条样式 //统一导航条样式 UIFont *font = [UIFont systemFontOfSize:19.f]; NSDictionary *textA ...

  8. C&num;创建 WebApi 项目

    做web api 可以参考一下网友 C#进阶系列——WebApi 接口参数不再困惑:传参详解 - 懒得安分 - 博客园https://www.cnblogs.com/landeanfen/p/5337 ...

  9. 搭建ssm的步骤

    搭建SSM的步骤 ----------------------------- 1.创建web工程 2.把SSM做需要的所有jar导入工程中 3.web.xml 1.Springmvc的前端控制器,如果 ...

  10. LaTeX技巧10:LaTeX数学公式输入初级入门

    LaTeX最强大的功能就是显示美丽的数学公式,下面我们来看这些公式是怎么实现的. 1.数学公式的前后要加上 $ 或 \( 和 \),比如:$f(x) = 3x + 7$ 和 \(f(x) = 3x + ...