jvm调优(二)
栈内存溢出,主要发生在大数据批量处理的情况,一般解决方案:1.加大栈内存 2.分批处理(用事物,全通过则通过,没有通过则回滚)
cpu过高,死锁啊,内存过高啊,i/0问题啊 都可以看 线程栈 jstat
堆内存溢出用jmap
full gc 一般户导致 Cpu 高,所以当 cpu突然很高的时候 也可以排查下 是不在进行 full gc
-----------------------------------------------------------------------------------------------------------------------------------------------
jvisualvm
配置 复制 startup.sh 文件为 startup_jvisualvm.sh
添加如下配置:
(最后一行)
export CATALINA_OPTS="$CATALINA_OPTS-Dcom.sun.management.jmxremote -Djava.rmi.server.hostname=192.168.189.129 -Dcom.sun.management.jmxremote.port=1050 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.password.file=../conf/jmxremote.password -Dcom.sun.management.jmxremote.access.file=../conf/jmxremote.access" exec "$PRGDIR"/"$EXECUTABLE" start "$@"
然后
添加就行了
插件的安装:
备注:
压测的时候 点击开始,结束后点击 停止,然后点击 拍照:
在快照中 可以定位到 使用cpu高的 方法:
堆 dump
将 生成的文件 用mat 打开
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
jprofiler 测试神器:
版本要一致
客户端:
下一步:创建一个 远程的,选择远程的操作系:
下一步:配置jvm厂商,版本, jvm32还是64
看java版本 [root@besttest bin]# java -version java version "1.8.0_73" Java(TM) SE Runtime Environment (build 1.8.0_73-b02) Java HotSpot(TM) 64-Bit Server VM (build 25.73-b02, mixed mode) 看位数: [root@besttest bin]# uname -a Linux besttest.com 2.6.32-431.el6.x86_64 #1 SMP Fri Nov 22 03:15:09 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux
下一步:配置 linux ip地址:
下一步配置 服务端 jprofiler 安装路径:
下一步:配置端口号:
下一步:把生成的配置考到 启动文件中去:(自己创建的startup_jprofiler.sh:见服务段操作)
ok 完成
服务端:
下载解压,创建startup.sh 文件为 startup_jprofiler.sh
CATALINA_OPTS="-agentpath:/opt/jprofiler9/binnux-x64bjprofilerti.so=port=8849,nowait $CATALINA_OPTS" export CATALINA_OPTS # end of modifications exec "$PRGDIR"/"$EXECUTABLE" start "$@"
用法:
还可以看具体方法:
查看调用树
---------------------------------------------------------------------------
cpu使用 情况: