最近一个服务器运行一段时间后,老自动停止,不知是何原因。请高手帮忙分析一下:
用jconsole检测结果如下:
 连接名称: pid: 2584 org.apache.catalina.startup.Bootstrap start
虚拟机: Java HotSpot(TM) Server VM 版本 1.6.0-b105
供应商: Sun Microsystems Inc.
名称: 2584@OA-V
正常运行时间: 2 days 2 hours 39 minutes
处理 CPU 时间: 1 hour 40 minutes
JIT 编译器: HotSpot Server Compiler
编译总时间: 1 minute活动线程:   216
峰:   281
守护线程:   191
已启动的线程总数: 1,158
当前类已装入: 13,671
已装入类的总数: 15,197
已卸载类的总数:  1,526当前堆大小:   291,182 Kb
堆大小的最大值: 1,009,792 Kb
分配的内存: 388,416 Kb
暂挂结束操作: 0 个对象
垃圾收集器: Name = 'PS MarkSweep', Collections = 257, Total time spent = 2 minutes
垃圾收集器: Name = 'PS Scavenge', Collections = 18,510, Total time spent = 3 minutes操作系统: Windows Vista 6.0
体系结构: x86
处理器的数目: 2
分配的虚拟内存: 1,004,124 Kb
物理内存总量: 2,097,151 Kb
可用物理内存:   274,588 Kb
交换空间总量: 4,194,303 Kb
可用交换空间: 3,506,084 KbVM 参数: -Xms1024m -Xmx1024m -XX:PermSize=256M -XX:MaxNewSize=512m -XX:MaxPermSize=512m -Djava.awt.headless=true

解决方案 »

  1.   

    高深的问题哟、、、LZ用的是 Tomcat发布?端口是否为:8080 ?是否用的数据库SQL2008 ?
      

  2.   

    sql 2005的,tomcat 发布,端口 8061,部署在虚拟机里
      

  3.   

    可用物理内存:   274,588 Kb感觉可用物理内存相对小了点jconsole能监控到服务停止时刻的数据状态吗?
      

  4.   

    楼主是否使用Hibernate?如果是配一下连接池就好了,默认的会停的。
      

  5.   

    怎么没见异常日志? 
    服务器异常终止。。找问题的方式还是根据日志分析停止的原因
    tomcat日志肯定有记录猜是猜不出具体问题所在的大致原因可能出在。。
    1. 内存不足,溢出了。。
    2. 连接句柄数过多了。。
    3. IO流打开太多了。。
    4. 程序逻辑bug导致
      

  6.   


    回复3楼,jconsole 检测到服务停止时刻的数据状态和正常的服务数据状态基本一致,但只是类加载比较多
      

  7.   

    我检查过系统日志,tomcat 甚至没有异常日志输出就停了
    今天早上看了,发现jconsole 同样报错。是不是系统内存不足了,服务是在虚拟机里跑的。2011-12-14 2:23:26 ClientCommunicatorAdmin restart
    警告: Failed to restart: java.rmi.ServerError: Error occurred in server thread; nested exception is: 
    java.lang.OutOfMemoryError: unable to create new native thread
    2011-12-14 2:23:26 ClientCommunicatorAdmin Checker-run
    警告: Failed to check connection: java.io.EOFException
    2011-12-14 2:23:26 ClientCommunicatorAdmin Checker-run
    警告: stopping
    2011-12-19 8:17:06 ClientCommunicatorAdmin restart
    警告: Failed to restart: java.rmi.ServerError: Error occurred in server thread; nested exception is: 
    java.lang.OutOfMemoryError: unable to create new native thread
    2011-12-19 8:17:06 ClientCommunicatorAdmin Checker-run
    警告: Failed to check connection: java.io.EOFException
    2011-12-19 8:17:06 ClientCommunicatorAdmin Checker-run
    警告: stopping
      

  8.   

    发现服务无法访问登陆上去后,发现tomcat已经被关闭
      

  9.   

    java.lang.OutOfMemoryError: unable to create new native thread这个是内存不足,或者是分配的内存还是小,或者是哪里内存泄露了VM 参数: -Xms1024m -Xmx1024m -XX:PermSize=256M -XX:MaxNewSize=512m -XX:MaxPermSize=512m -Djava.awt.headless=true
    根据自己程序的特性再调节试试
      

  10.   

    内存溢出的问题很难查找原因。。用工具MemoryAnalyzer分析一下先将内存溢出的工程通过命令打成一个.bin文件。。导入MemoryAnalyzer工具中,分析。。可具体分析出某个类或者js占用的内存大小。。很方便。。