tomcat运行一段时间后会无故停止。。。求打救...

绝对在乎妮 2013-04-11 10:33:38
近期做了个东西,是发送一个URL请求的。主要是采用java.util.Timer类定时跑一个java.util.TimerTask任务。放在apache-tomcat-7.0.32上跑。在我本地机子跑没事,可是放到测试服务器上跑一段时间后(不确定什么时候),它会停止,tomcat控制台窗口没打印东西,无报错,日志文件也无错误信息。各地方找很久说什么有个hs_err_pid**.log之类的文件,在tomcat目录和system32下也没有找到。tomcat控制台窗口信息:
----------------------------------------------------------------------------------------------
之前找过,有人说是因为任务线程把数据库连接池的连接用光,不释放连接导致。我用jvisualvm.exe(就是他们说的jconsole.exe的升级版那个)去看线程状态。不是OOM问题,看到那个timer-0的线程也在跑。。。。求大神出现&打救
...全文
5768 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
kunkunqian 2014-10-14
  • 打赏
  • 举报
回复
绝对在乎妮 2013-04-23
  • 打赏
  • 举报
回复
看了一下,觉得13楼的比较近一些。。。多谢大家啦
绝对在乎妮 2013-04-23
  • 打赏
  • 举报
回复
看来还是找不到原因了。。。因为现象不明显。。。
xiaof0535 2013-04-16
  • 打赏
  • 举报
回复
做这样两个测试: 1:写一个多线程程序,模拟1万次请求,看看有什么现象。程序有问题的话1万次足以把程序干掉,出问题以后看看TOMCAT有什么错误提示 2:你换成tomcat6试一下 还有一个地方楼主注意一下,你说你用的是MYSQL数据库,MYSQL数据库在默认的情况下如果8小时无请求,那么连接会自动关闭,你看看是不是这个原因导致你的程序完蛋掉了。
绝对在乎妮 2013-04-16
  • 打赏
  • 举报
回复
引用 13 楼 tianma630 的回复:
引用 12 楼 ljl434841 的回复:引用 11 楼 tianma630 的回复:可能是内存溢出 你看看进程是不是把内存沾满了
内存没有溢出。。。用jvisualvm看过。。。最大的问题是本地运行没问题,放到测试机上跑一段时间会挂。。。测试机的硬件性能比我本地的要好很多,如果是资源问题,也应该是我本地的挂掉才是。。。一时还是找不到原因。。。而且放到测试机上跑,不……

-----------------------------
在另一个机子上试了一天,终于跑出来个问题了。现象还是那样,如下截图:






-------------------------------
在jvisualvm里看到程序的线程并没有挂,还是runing状态的,只是程序在10点多就不动了,查过数据库表数据,也没有对表数据进行操作,这程序好像是死了一样。。。还是没找出问题。。。。求解答
sdflymin 2013-04-16
  • 打赏
  • 举报
回复
既然已经使用了Timter可以增加一个定时重启嘛,
绝对在乎妮 2013-04-16
  • 打赏
  • 举报
回复
引用 16 楼 tianma630 的回复:
引用 14 楼 ljl434841 的回复:引用 13 楼 tianma630 的回复:引用 12 楼 ljl434841 的回复:引用 11 楼 tianma630 的回复:可能是内存溢出 你看看进程是不是把内存沾满了 内存没有溢出。。。用jvisualvm看过。。。最大的问题是本地运行没问题,放到测试机上跑一段时间会挂。。。测试机的硬件性能比我本地的要好很多,如果……
--------------------------------- 在尝试把任务执行频率的时间调长一些。。。是用jdbc来操作数据库的,那个开源的c3p0连接池
tianma630 2013-04-16
  • 打赏
  • 举报
回复
引用 14 楼 ljl434841 的回复:
引用 13 楼 tianma630 的回复:引用 12 楼 ljl434841 的回复:引用 11 楼 tianma630 的回复:可能是内存溢出 你看看进程是不是把内存沾满了 内存没有溢出。。。用jvisualvm看过。。。最大的问题是本地运行没问题,放到测试机上跑一段时间会挂。。。测试机的硬件性能比我本地的要好很多,如果是资源问题,也应该是我本地的挂掉才是。。。一……
是不是 你任务时间间隔太短 造成的?你是用jdbc操作数据库的吗
tianma630 2013-04-15
  • 打赏
  • 举报
回复
引用 12 楼 ljl434841 的回复:
引用 11 楼 tianma630 的回复:可能是内存溢出 你看看进程是不是把内存沾满了 内存没有溢出。。。用jvisualvm看过。。。最大的问题是本地运行没问题,放到测试机上跑一段时间会挂。。。测试机的硬件性能比我本地的要好很多,如果是资源问题,也应该是我本地的挂掉才是。。。一时还是找不到原因。。。而且放到测试机上跑,不是马上就挂,它会跑一段时间,不确定是多长,然……
你换其他机子试试 如果都没问题 就是这个机子问题
绝对在乎妮 2013-04-15
  • 打赏
  • 举报
回复
引用 11 楼 tianma630 的回复:
可能是内存溢出 你看看进程是不是把内存沾满了
内存没有溢出。。。用jvisualvm看过。。。最大的问题是本地运行没问题,放到测试机上跑一段时间会挂。。。测试机的硬件性能比我本地的要好很多,如果是资源问题,也应该是我本地的挂掉才是。。。一时还是找不到原因。。。而且放到测试机上跑,不是马上就挂,它会跑一段时间,不确定是多长,然后会挂,现象就上面那图那样,无报错无日志信息,在jvisualvm上看,内存也没溢出,线程是main在running,timer-0是在waiting。。。
tianma630 2013-04-15
  • 打赏
  • 举报
回复
可能是内存溢出 你看看进程是不是把内存沾满了
绝对在乎妮 2013-04-15
  • 打赏
  • 举报
回复
3楼:连接没有及时的释放,后面的获取不到新的数据库连接。 你先检查一下你的程序,看看连接是否都进行了释放。 --------------------------------------------- 这个我是用连接池,proxool和c3p0都用过了,持久用ibatis,问过同事,说是连接它会自动回收,也说手动释放不了,因为对这个ibatis不熟,所以也没找到方法怎么手动释放之。。。目前情况来看可能是这种情况?
绝对在乎妮 2013-04-15
  • 打赏
  • 举报
回复
7楼:没有日志确实不太好分析。你看下日志里是否有内存不足相关的,感觉可能和内存泄露导致耗尽有关系! ---------------------------------- 我用jvisualvm.exe(就是他们说的jconsole.exe的升级版那个),看到的状态不是内存溢出问题。。。比较麻烦的问题是,代码程序在我本地跑了三天都没问题,放到测试机就会挂。现象是无日志也无报错信息,这个真是有心无力。。。望大神指明方向
绝对在乎妮 2013-04-15
  • 打赏
  • 举报
回复
我去年也遇到过,把数据库换了就可以了。之前是access数据库换为mysql后就再没出现过。 ------------------------------------------------------------------ 回四楼,我现在连的就是mysql数据库。。。
火影之贺 2013-04-12
  • 打赏
  • 举报
回复
没有日志确实不太好分析。你看下日志里是否有内存不足相关的,感觉可能和内存泄露导致耗尽有关系!
跳蚤图 2013-04-12
  • 打赏
  • 举报
回复
引用 5 楼 mailyxf 的回复:
不懂,留下足迹 学习一下,等大神出来
=1
钢筋裤衩蛋 2013-04-12
  • 打赏
  • 举报
回复
不懂,留下足迹 学习一下,等大神出来
南山猛士 2013-04-12
  • 打赏
  • 举报
回复
我去年也遇到过,把数据库换了就可以了。之前是access数据库换为mysql后就再没出现过。
qqhw123 2013-04-11
  • 打赏
  • 举报
回复
连接没有及时的释放,后面的获取不到新的数据库连接。 你先检查一下你的程序,看看连接是否都进行了释放。
绝对在乎妮 2013-04-11
  • 打赏
  • 举报
回复
...楼上的,我要怎么样?
加载更多回复(1)

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧