日期:2014-05-20  浏览次数:20881 次

应用程序运行一段时间就会卡,然后导致服务死掉,困扰许久不能解决,求助。
硬件信息:
CUP: Intel X5450 3GHZ 8cpus
内存:4G
服务器:WINDOWS2003

软件
应用服务器 WEBLOGIC10 
WEBLOGIC 堆配置 -Xms512m -Xmx1024m
SUN JDK1.5.06

应用程序并行用户200人左右,系统在使用一段时间(几个小时到1天不等)后会导致应用服务器不稳定,有时候会很卡,偶尔能恢复,但最终过不了多久会停止响应。观察服务器的内存 和CUP占用并不太高,服务的后台日志没有什么特别致命的错误,最多的是socket write error connection reset by peer,这个错误很频繁,但上网搜索,此错误并不会影响业务。我们还有一个服务器,硬件和软件环境都相同,但用户较少,基本稳定,所以怀疑是用户量大导致。另外,偶尔服务停止有java.lang.OutOfMemoryError: nativeGetNewTLA 错误。



------解决方案--------------------
我们也遇到过这种情况,很大原因是由于程序设计得不好,比如没有释放内存(垃圾自动收集太慢),没有显式关掉没用的数据库连接等...原因很多
------解决方案--------------------
都是你一个人发的????发两个还不如发一个高分贴。比较有吸引力

java.lang.OutOfMemoryError: nativeGetNewTLA

应该是并发数过大 导致内存溢出,你的内存太小了,才4G,最好加到16G,或者更高。

在加内存之前在服务器上改一下最大连接数设置,在apache里配置也可以。 

 
------解决方案--------------------
并行用户200人左右?

打开JVM的监控,比如jconsole

1 看看连接数吧。
我怀疑你你的程序建立了连接,却忘记归还了。而且从时间看,很可能是某个不常用的程序引起的

2 看看内存使用情况

200人,不少了哦。真的是并行吗?
------解决方案--------------------

------解决方案--------------------
友情up
------解决方案--------------------
安装你说的话,200用户不存在什么问题,你修改配置已经够使用了,看看你的代码,和对数据库的操作是否没有关闭,是不是使用了数据库连接池来处理你的问题。java内存泄露一般情况很少哦,你应该检查你对数据库的操作在获得连接后是否已经关闭了。