只显示主题贴
多谢各位提供的思路。问题已经解决。
原因是这样的:
根本原因是程序中有些数据库连接没有主动释放。 当程序跑了一段时间,连接积累到一定程度(Tomcat配置中默认最大连接数150),其他连接申请就处于等待状态,CPU会很高。 直到那些无用的连接因垃圾回收之后自动释放, 程序才恢复了半正常状态,部分空闲的连接可以继续被使用。一旦客户多点几下没有主动释放连接的页面, CPU又马上上涨。
修改程序,把这些数据库连接使用完之后主动释放。 程序一直跑得正常, 一个礼拜了, 还未出现CPU很高的情况。 我看数据库服务器的会话数目,一直保持在一定数目以内。到目前为止,系统还比较稳定。
- 进入论坛 Java 版
今天早上又出现了系统缓慢现象了。 刚出现缓慢现象时,内存已经达到295M,虚拟内存一直是300M。 然后有内存一直在290M左右徘徊,CPU占用率达60%。 等约过了10分钟,内存回落,CPU占用率也很低了。
如果这十分钟是因为垃圾回收造成的,那是否可以设置什么让JVM尽快回收垃圾,不要到了某个值才开始回收,这样容易造成系统突然停顿。
设置Xsms256m,Xsmx1024m之后。为什么Java.exe使用内存到300不到就开始回落,不继续上涨? 那我把Xsms设置大一些,就尽量避免系统缓慢现象发生?
- 进入论坛 Java 版
非常感谢楼上兄弟的解答。
我已经设置了Xsms256m,Xsmx1024m。 不过很奇怪的是,一启动Web服务器,不是内存达到256M,而是虚拟内存达到256M。 内存从40M开始涨,一直涨到200多之后,又恢复到10M,然后继续往上涨。 内存达到200M之后,又会恢复到10M左右。 以此反复。
系统从昨晚重新启动之后,到目前为止,还未出现系统缓慢现象。 不过我想再问一下, 设置Xsms,Xsmx参数,为什么虚拟内存发生变化,而不是内存发生变化?
- 进入论坛 Java 版
我现在有一个Web系统。 每隔半天或1天就会出现整个系统很缓慢的现象。Web服务器中,Java.exe的CPU占用率达60%。 这个现象每次大约维持20分钟时间。 请问这个是否因为Java的垃圾回收造成的。
目前这个系统的应用指标:
1.客户端大约有30个在线用户一直在使用。 浏览器是IE。
2.后台使用Oracle服务器。系统迟钝的时候,Oracle数据库服务器还是比较正常的。
3.Web服务器硬件指标:
o CPU:2.5G
o 内存:2G 。其中Java.exe的内存使用一直保持在100M以内,虚拟内存一直保持在150M以内。
4.Web服务器的发布:
...
- 进入论坛 Java 版







评论排行榜