服务器运行一段时间后,自动停止

时间:2022-11-18 16:59:45
     最近一个服务器运行一段时间后,老自动停止,不知是何原因。请高手帮忙分析一下:
用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 Kb

VM 参数: -Xms1024m -Xmx1024m -XX:PermSize=256M -XX:MaxNewSize=512m -XX:MaxPermSize=512m -Djava.awt.headless=true

14 个解决方案

#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


这么高深的问题,我只能表示我来过。

#7


引用 3 楼 dracularking 的回复:
可用物理内存: 274,588 Kb

感觉可用物理内存相对小了点

jconsole能监控到服务停止时刻的数据状态吗?


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

#8


自动停止指的什么??
我做的项目,因在线人数多导致线程等待发生过页面打不开的情况。

#9


引用 5 楼 kouyisc 的回复:
怎么没见异常日志? 
服务器异常终止。。找问题的方式还是根据日志分析停止的原因。。。
tomcat日志肯定有记录。。。猜是猜不出具体问题所在的。。。

大致原因可能出在。。
1. 内存不足,溢出了。。
2. 连接句柄数过多了。。
3. IO流打开太多了。。
4. 程序逻辑bug导致。。。

我检查过系统日志,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

#10


引用 8 楼 wangjiangbo2 的回复:
自动停止指的什么??
我做的项目,因在线人数多导致线程等待发生过页面打不开的情况。

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

#11


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
根据自己程序的特性再调节试试

#12


引用 11 楼 dracularking 的回复:
java.lang.OutOfMemoryError: unable to create new native thread

这个是内存不足,或者是分配的内存还是小,或者是哪里内存泄露了

VM 参数: -Xms1024m -Xmx1024m -XX:PermSize=256M -XX:MaxNewSize=512m -XX:MaxPermSize=512m -Djava.awt.he……


明显的内存不足, 检查一下内存泄露,如果存在这个问题是比较严重的。

#13


引用 9 楼 haiqing421 的回复:
引用 5 楼 kouyisc 的回复:
怎么没见异常日志?
服务器异常终止。。找问题的方式还是根据日志分析停止的原因。。。
tomcat日志肯定有记录。。。猜是猜不出具体问题所在的。。。

大致原因可能出在。。
1. 内存不足,溢出了。。
2. 连接句柄数过多了。。
3. IO流打开太多了。。
4. 程序逻辑bug导致。。。

我检查过系统日志,tomcat 甚至没有异常日志……

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

#14


恩 先查找一下,是否内存泄露

#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


这么高深的问题,我只能表示我来过。

#7


引用 3 楼 dracularking 的回复:
可用物理内存: 274,588 Kb

感觉可用物理内存相对小了点

jconsole能监控到服务停止时刻的数据状态吗?


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

#8


自动停止指的什么??
我做的项目,因在线人数多导致线程等待发生过页面打不开的情况。

#9


引用 5 楼 kouyisc 的回复:
怎么没见异常日志? 
服务器异常终止。。找问题的方式还是根据日志分析停止的原因。。。
tomcat日志肯定有记录。。。猜是猜不出具体问题所在的。。。

大致原因可能出在。。
1. 内存不足,溢出了。。
2. 连接句柄数过多了。。
3. IO流打开太多了。。
4. 程序逻辑bug导致。。。

我检查过系统日志,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

#10


引用 8 楼 wangjiangbo2 的回复:
自动停止指的什么??
我做的项目,因在线人数多导致线程等待发生过页面打不开的情况。

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

#11


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
根据自己程序的特性再调节试试

#12


引用 11 楼 dracularking 的回复:
java.lang.OutOfMemoryError: unable to create new native thread

这个是内存不足,或者是分配的内存还是小,或者是哪里内存泄露了

VM 参数: -Xms1024m -Xmx1024m -XX:PermSize=256M -XX:MaxNewSize=512m -XX:MaxPermSize=512m -Djava.awt.he……


明显的内存不足, 检查一下内存泄露,如果存在这个问题是比较严重的。

#13


引用 9 楼 haiqing421 的回复:
引用 5 楼 kouyisc 的回复:
怎么没见异常日志?
服务器异常终止。。找问题的方式还是根据日志分析停止的原因。。。
tomcat日志肯定有记录。。。猜是猜不出具体问题所在的。。。

大致原因可能出在。。
1. 内存不足,溢出了。。
2. 连接句柄数过多了。。
3. IO流打开太多了。。
4. 程序逻辑bug导致。。。

我检查过系统日志,tomcat 甚至没有异常日志……

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

#14


恩 先查找一下,是否内存泄露