JVM参数调优
性能监控
Linux一般会出现CPU过高和内存过大,性能调优主要针对这两块
性能调优的方式
1、项目压测阶段 Jvisualvm图形化工具查看
2、项目正式上线后 不能采用Jvisualvm图形化工具,采用以下方式
CPU占比率过高
- top命令观察问题,CPU占用率居高不下,内存不断增长
- top -Hp观察进程中的线程,哪个线程CPU和内存占比高
- jstack定位线程状况,重点关注线程状态为WAITING BLOCKED状态的
jstack 需要16进制的pid,这边需要10进制专程成16进制
- waiting on <0x00000006c0024b70> (a java.lang.ref.ReferenceQueue$Lock)
说明当前线程在等在<XX>线程释放锁
OOM问题定位
-
jmap -histo 4655 | head -20 查找有多少对象产生
-
jmap -dump:format=b,file=xxx pid :
线上系统,内存特别大,jmap执行期间会对进程产生很大影响,甚至卡顿(电商不适合)- 设定了参数HeapDumpOnOutOfMemeryError,OOM的时候会自动产生堆转储文件
- 系统高可用,停掉这台服务器对其他服务不影响
面试的时候时候一定不能说采用图形界面定位OOM问题
1:已经上线的项目的项目不能采用图形界面用什么?(cmdline arthas)
2:图形界面用在什么地方?(测试!测试的时候进行监控! 压力测试)