thxger 2009-07-17 00:12
浏览 439
已采纳

TOMCAT内存溢出后什么情况下TOMCAT死掉什么情况下不会死掉?

我最近做压力测试,TOMCAT老崩溃。观查发现一个不解的问题,后台报内存益出后,TOMCAT并不一定死,但压力太大时TOMCAT过一会就会死掉,有时甚至死的用JSVC都关不掉,只能kill -9来解决。我疑惑的是,什么情况下TOMCAT才会真正死掉?

我觉得TOMCAT能抗多大压力只是一方面,我希望即使它处理不了过多并发,至少别僵死,压力过后要能正常服务。

网上讨论TOMCAT崩溃的贴子不少,但都只是分析项目中的问题,没有看到谁详细讲解TOMCAT死掉的直接原因。

发此贴前最后一次测试的结果是这样的,第一个OutOfMemory之后,TOMCAT还可以正常服务,过了好一会儿,又蹦了两个OutOfMemory,然后JK就报processCallbacks status 2了,TOMCAT无法访问。
[b]问题补充:[/b]
pJun的猜测有些道理。当然,我的测试也并非十分严谨,tail -f看日志有延时,浏览器、APACHE有没有用缓存欺骗我也不好说,我只能说以我的经验来看读到缓存的可能很小,另外报OOM也分了两种情况,一种是java heap的,一种是GC limit exceed。我不是专业搞测试的,想真正严谨地测这堆东西太麻烦了。不过TOMCAT假死、真死、死到关不掉这三种情况我想大家都碰到过。明确地说,我想知道的问题如下:

1、TOMCAT死掉的直接原因(包括三种情况)有哪些;
2、有没有办法避免后两种情况(JAVA的东西OOM之后只能死掉吗?)

  • 写回答

2条回答 默认 最新

  • pjuneye 2009-07-17 00:40
    关注

    参考这个帖子,可能会有启发:
    [quote]
    tomcat服务器僵死问题
    http://www.iteye.com/problems/14510
    [/quote]

    说点个人猜想:Tomcat如果报出OutOfMemory的话,应该Tomcat就不能正常提供服务了,不过守护线程是否结束就不得而知了(照LZ的描述,我猜测应该是还在)
    LZ提到了JK,我猜想应该是做了负载均衡的吧,如果真是这样的话,那问题在于Apache不知道Tomcat已经不能处理了,还在给它分配任务.所以才会有了后两次的OutOfMemory,这种状况要持续要Apache获知Tomcat的真实状况为止,标志就是JK说 "processCallbacks status 2".这样Tomcat应该就不会再被分配请求,自然也就看起来OVER了.

    个人猜想居多,LZ请自行确认.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 android报错 brut.common.BrutException: could not exec (exit code = 1)
  • ¥15 nginx反向代理获取ip,java获取真实ip
  • ¥15 eda:门禁系统设计
  • ¥50 如何使用js去调用vscode-js-debugger的方法去调试网页
  • ¥15 376.1电表主站通信协议下发指令全被否认问题
  • ¥15 物体双站RCS和其组成阵列后的双站RCS关系验证
  • ¥15 复杂网络,变滞后传递熵,FDA
  • ¥20 csv格式数据集预处理及模型选择
  • ¥15 部分网页页面无法显示!
  • ¥15 怎样解决power bi 中设置管理聚合,详细信息表和详细信息列显示灰色,而不能选择相应的内容呢?