精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2011-10-18
建议楼主从代码角度出发进行研究。
原因: 1. 既然项目开发到现在已经进入部署阶段,说明之前大家本地测试是OK的。 2. 有可能是系统集成的时候,代码之间调用出了问题。 3. 如果是非第一次系统部署,那么之前系统应该是OK的。 可以看看最近做过什么更改 很是纳闷,一个小小的tomcat 就算hibernate 性能再差能这么耗CPU 内存么? 是不是楼主的项目用到大量的BLOB字段,然后每次启动就把所有的数据load进来了呢? |
|
返回顶楼 | |
发表时间:2011-10-18
严重怀疑是内存泄露的问题
|
|
返回顶楼 | |
发表时间:2011-10-18
最后修改:2011-10-18
兄弟,一个比较实用的方法,你可以分析一下,具体在使用系统什么功能模块的时候导致内存狂涨,然后在测试环境验证重现问题,先把问题产生的功能点找到,然后再重点去分析具体的程序代码,这才是解决问题的方法,然后适当地引用jprofier,jconsole这类工具来辅助查找问题。
切忌成为无头苍蝇 |
|
返回顶楼 | |
发表时间:2011-10-18
这么大的内存,估计都不能dump下来的。。。
你可以 @RednaxelaFX @IcyFenix问一下 |
|
返回顶楼 | |
发表时间:2011-10-18
机器不错呀 ,不过内存涨得太快,JDK6可以用jmap -histo <进程号> 查看一下哪个类实例最多,缩小一下问题范围
另外这么大的内存heap,直接拿内存快照不太现实,拿下来也不好分析 |
|
返回顶楼 | |
发表时间:2011-10-18
wxq594808632 写道 visual vm不能查看具体的内存占用吗?
这个没用过。一直用的是jrockit自带的Jrockit Mission Control,可以按照内存占用排序数据类型,然后追踪到项目代码的具体某个方法,查看是什么类型的数据占用的内存最多,然后就是解决咯。 用visual vm1.3.2,jdk1.6的话,能直接查看到实例创建情况,一下就一目了然。大内存,dump下来分析非常非常的不现实。 |
|
返回顶楼 | |
发表时间:2011-10-18
内存有泄漏?32G内存full gc的时间不知道要多久...
|
|
返回顶楼 | |
发表时间: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内存,会有莫名其妙问题。。 |
|
返回顶楼 | |
发表时间: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的比例 系统慢不一定跟内存有关系~线上数据如果跟测试数据不一样,那有可能是有些情况没考虑到呢~ |
|
返回顶楼 | |
发表时间:2011-10-19
最后修改:2011-10-19
大家看看图,这个Jasperreport,是不是罪魁祸首现在还不能定,但这个也太高了。
用的是Japerreport 3.7.0.系统大量使用报表。 |
|
返回顶楼 | |