软件环境:JDK1.4 ,Red Hat Enterprise Linux Advanced Platform ,informix11
问题背景:每个交易发到系统,系统都会启动一个线程来处理该交易,当然线程是放到我们自己写的线程池里面执行,运行了一年多也没问题,前几天突然发现,交易消息收到了,但是没处理。也就是执行到从线程池获取线程的时候停住了,但是系统没挂掉接受消息的线程正常,也没有错误日志,启下程序又好了。如果说线程池满了,会抛异常(Exception)而且也捕获了异常信息,但是日志没输出,应该没有异常。
跟数据库的连接应该没关系,因为打印的日志文件实在看不出问题。请大家帮忙分析下什么原因可能导致这种情况的发生,或者怎么查看虚拟机日志可以找到问题。
------解决方案--------------------
从问题描述来看,不接触你的代码,实在难看出问题。帮你顶,希望有高手解决
------解决方案--------------------
...帮顶吧..这种问题说不得~ 时间久了,很多小BUG会造成很多不可思议的问题出来
------解决方案--------------------
估计是线程睡着了吧!而且很安详!
------解决方案--------------------
怎么感觉像“死锁”了那样
------解决方案--------------------
尝试使用一些工具做分析是否代码写得有“埋伏” findbugs.
------解决方案--------------------
这种问题在很多初学者来说,都存在的一个必经的路径。
------解决方案--------------------
应该是被锁了,看代码是否有地方抛出异常没有释放锁
------解决方案--------------------
怎么确定是执行到从线程池获取线程的时候停住了的(是获取前还是获取后)?是后面没有卡住的可能吗?
查看 JVM 日志
Java 虚拟机(JVM)日志是作为纯文本文件写的。因此,查看这些日志没有特殊的要求。
关于本任务
使用两种技术的任一个来查看应用程序服务器的 JVM 日志:
使用管理控制台,它也支持从远程机器查看 JVM 日志。
使用存储日志的机器上的文本编辑器。
过程
从管理控制台查看 JVM 日志。
启动管理控制台。
在控制台导航树中单击故障诊断 > 日志和跟踪。要查看特定服务器的日志,单击服务器名以选择它,然后单击 JVM 日志。
选择运行时选项卡。
单击与您要查看的日志相应的查看。
从存储 JVM 日志的机器查看这些日志。
转至存储日志的机器。
浏览至 profile_root/logs/server_name 目录并选择 SystemOut.log 或 SystemErr.log。
在文本编辑器中打开文件或将文件拖放到编辑和查看程序中。