论坛首页 Java企业应用论坛

生产环境jvm内存运行1小时,就接近xmx,系统奇慢。

浏览 19093 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2011-10-18  
建议楼主从代码角度出发进行研究。

原因:
1. 既然项目开发到现在已经进入部署阶段,说明之前大家本地测试是OK的。
2. 有可能是系统集成的时候,代码之间调用出了问题。
3. 如果是非第一次系统部署,那么之前系统应该是OK的。 可以看看最近做过什么更改

很是纳闷,一个小小的tomcat 就算hibernate 性能再差能这么耗CPU 内存么? 是不是楼主的项目用到大量的BLOB字段,然后每次启动就把所有的数据load进来了呢?
0 请登录后投票
   发表时间:2011-10-18  
严重怀疑是内存泄露的问题
0 请登录后投票
   发表时间:2011-10-18   最后修改:2011-10-18
兄弟,一个比较实用的方法,你可以分析一下,具体在使用系统什么功能模块的时候导致内存狂涨,然后在测试环境验证重现问题,先把问题产生的功能点找到,然后再重点去分析具体的程序代码,这才是解决问题的方法,然后适当地引用jprofier,jconsole这类工具来辅助查找问题。
切忌成为无头苍蝇
0 请登录后投票
   发表时间:2011-10-18  
这么大的内存,估计都不能dump下来的。。。
你可以
@RednaxelaFX
@IcyFenix问一下

0 请登录后投票
   发表时间:2011-10-18  
机器不错呀 ,不过内存涨得太快,JDK6可以用jmap -histo <进程号> 查看一下哪个类实例最多,缩小一下问题范围
另外这么大的内存heap,直接拿内存快照不太现实,拿下来也不好分析
0 请登录后投票
   发表时间:2011-10-18  
wxq594808632 写道
visual vm不能查看具体的内存占用吗?
这个没用过。一直用的是jrockit自带的Jrockit Mission Control,可以按照内存占用排序数据类型,然后追踪到项目代码的具体某个方法,查看是什么类型的数据占用的内存最多,然后就是解决咯。

用visual vm1.3.2,jdk1.6的话,能直接查看到实例创建情况,一下就一目了然。大内存,dump下来分析非常非常的不现实。
0 请登录后投票
   发表时间:2011-10-18  
内存有泄漏?32G内存full gc的时间不知道要多久...
0 请登录后投票
   发表时间:2011-10-19  
neptune 写道
系统运行环境在rhel5.5上,64个cpu,64G的内存。系统先是分配了32g给jvm,用visual vm监控,运行2个小时后32g全部使用了,然后系统非常慢。然后修改为jvm使用4g内,也是一会就全部使用完。

tomcat的catalina.sh配置如下。

JAVA_OPTS='-d64 -server -Xms8g -Xmx8g -XX:PermSize=256m -XX:MaxPermSize=256m -Xss256k'

CATALINA_OPTS="-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=9001 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -Djava.rmi.server.hostname=ip地址"

现在怀疑是某个功能的代码写的有问题,问,visual vm有没查看某个线程运行时使用内存情况的命令和插件呀。


原来能配那么大得内存,靠。上次oracle的工程师说jvm超过4G内存,会有莫名其妙问题。。
0 请登录后投票
   发表时间:2011-10-19  
这配置,好霸气~
没用过visualvm,不知道你说的“用完”是什么状况?有发生oom异常么?

1. tomcat的verbose gc有设置么,没有的话建议可以加上看看gc活动的情况
引用
-verbose:gc -XX:+PrintGCDetails -Xloggc:$GCLOGFILE -XX:+PrintGCTimeStamps -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=$BINROOT/dump


2. 不知道服务器上有没有jmap,如果有,可以试试
引用
jmap -histo | more

看下那些class的实例比较多(有时候执行会失败)

3. 将jvm内存映像dump下来用工具分析(jprofiler, eclipse MAT等)
引用
jmap -dump:format=b,file=dump.bin <PID>

可以将内存参数修改小一点重启运行一段时间再dump,节省时间。。不过,这个命令有时候也是失败的~

4. 可能需要根据实际情况调整下jvm内存的New和Tuern的比例

系统慢不一定跟内存有关系~线上数据如果跟测试数据不一样,那有可能是有些情况没考虑到呢~
0 请登录后投票
   发表时间:2011-10-19   最后修改:2011-10-19
大家看看图,这个Jasperreport,是不是罪魁祸首现在还不能定,但这个也太高了。
用的是Japerreport 3.7.0.系统大量使用报表。
  • 大小: 101.4 KB
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics