软件环境:JDK1.4 ,Red Hat Enterprise Linux Advanced Platform ,informix11
  问题背景:每个交易发到系统,系统都会启动一个线程来处理该交易,当然线程是放到我们自己写的线程池里面执行,运行了一年多也没问题,前几天突然发现,交易消息收到了,但是没处理。也就是执行到从线程池获取线程的时候停住了,但是系统没挂掉接受消息的线程正常,也没有错误日志,启下程序又好了。如果说线程池满了,会抛异常(Exception)而且也捕获了异常信息,但是日志没输出,应该没有异常。
    跟数据库的连接应该没关系,因为打印的日志文件实在看不出问题。请大家帮忙分析下什么原因可能导致这种情况的发生,或者怎么查看虚拟机日志可以找到问题。

解决方案 »

  1.   

    尝试使用一些工具做分析是否代码写得有“埋伏” findbugs.
      

  2.   

    1、仔细研究源代码,重新来一遍单元测试。
    2、找专业的测试人士用专门的测试方案来抓虫,让他告诉你bug重现的规律。
      

  3.   

    怎么确定是执行到从线程池获取线程的时候停住了的(是获取前还是获取后)?是后面没有卡住的可能吗?查看 JVM 日志Java 虚拟机(JVM)日志是作为纯文本文件写的。因此,查看这些日志没有特殊的要求。
    关于本任务
    使用两种技术的任一个来查看应用程序服务器的 JVM 日志:    使用管理控制台,它也支持从远程机器查看 JVM 日志。
        使用存储日志的机器上的文本编辑器。过程    从管理控制台查看 JVM 日志。
            启动管理控制台。
            在控制台导航树中单击故障诊断 > 日志和跟踪。要查看特定服务器的日志,单击服务器名以选择它,然后单击 JVM 日志。
            选择运行时选项卡。
            单击与您要查看的日志相应的查看。
        从存储 JVM 日志的机器查看这些日志。
            转至存储日志的机器。
            浏览至 profile_root/logs/server_name 目录并选择 SystemOut.log 或 SystemErr.log。
            在文本编辑器中打开文件或将文件拖放到编辑和查看程序中。