一个OA系统交付后,几个小时候就宕机,但Cpu也不繁忙,内存也没有占用好多,就是收不到请求。但前面几个小时一切正常,还有就是重启tomcat后又能正常几个小时,问如果你是项目中成员,你该怎么解决这个问题。

解决方案 »

  1.   

    记日志,调到debug级,看宕机时到底发生了什么。
      

  2.   

    1: ps -efww | grep tomcat  看看进程还在不在
    2: netstat -anp | grep :8080  看看端口是否存在
    3: tail -f log/app-oa.log  看看日志是否在跑
    4: netstat -anp | grep 1521  看看跟数据库之间的 TCP 连接有多少?
      

  3.   

    1、在log4j.xml下配置日志显示级别为debug,根据日志提示进行追踪。
    2、看一下JVM内存设置的大小,同时考虑Java未销毁垃圾回收不用的对象。
    3、在Tomcat中看一下设置的默认会话连接数的大小,考虑是否会话使用已满。
    4、建好的会话一直占用端口,可以用netstat -an 看一下OA系统目前端口占用的状况。
    5、楼主未提到硬盘空间大小的问题,结合本人项目经验觉得需要考虑以下两点:
       5.1、应用需要写日志或者插入记录的硬盘存储空间不足。
       5.2、应用使用的数据库如Oracle分配的表空间不足,表空间使用率将近100%。
    6、看应用在哪一模块出现明显的停摆状态(一般在核心的数据交换的业务模块),对该模块进行   System.out.println("step1、step2、step3、……")跟踪,呵呵,看看你的代码是否健壮。
    7、到了这步如果还木找出原因,我建议考虑操作系统的兼容性问题,如原来应用一直在windows在跑现在客户的是Linux的操作系统,虽然Java跨平台,但是有些硬编码还是可能出现问题的,另外查看一下JDK的版本是否与原先的一致哦。
    8、……待续
      

  4.   

    1、在log4j.xml下配置日志显示级别为debug,根据日志提示进行追踪。
    2、看一下JVM内存设置的大小,同时考虑Java未销毁垃圾回收不用的对象。
    3、在Tomcat中看一下设置的默认会话连接数的大小,考虑是否会话使用已满。
    4、建好的会话一直占用端口,可以用netstat -an 看一下OA系统目前端口占用的状况。
    5、楼主未提到硬盘空间大小的问题,结合本人项目经验觉得需要考虑以下两点:
      5.1、应用需要写日志或者插入记录的硬盘存储空间不足。
      5.2、应用使用的数据库如Oracle分配的表空间不足,表空间使用率将近100%。
    6、看应用在哪一模块出现明显的停摆状态(一般在核心的数据交换的业务模块),对该模块进行 System.out.println("step1、step2、step3、……")跟踪,呵呵,看看你的代码是否健壮。
    7、到了这步如果还木找出原因,我建议考虑操作系统的兼容性问题,如原来应用一直在windows在跑现在客户的是Linux的操作系统,虽然Java跨平台,但是有些硬编码还是可能出现问题的,另外查看一下JDK的版本是否与原先的一致哦。
    8、……待续