记录一次生产jvm调优

jvm 参数配置 几个必须知道的参数含义

说下我们生产配置,服务四个节点,单节点分配16g内存
-Xms16g 初始化堆大小
-Xmx16g 最大堆内存
-Xmn6gm 年轻代内存大小
-Xss256k 每个线程的初始化内存
-XX:MetaspaceSize=256m 元空间触发gc的大小
-XX:+HeapDumpOnOutOfMemoryError 配置堆栈内存溢出错误日志
-XX:HeapDumpPath=/opt/logs/micro-service/heapdump.hprof 错误日志输出路径

gc日志打印 时间 gc详情 输出路径

-XX:+PrintGC 输出GC日志
-XX:+PrintGCDetails 输出GC的详细日志
-XX:+PrintGCTimeStamps 输出GC的时间戳(以基准时间的形式)
-XX:+PrintGCDateStamps 输出GC的时间戳(以日期的形式,如 2013-05-04T21:53:59.234+0800)
-XX:+PrintHeapAtGC 在进行GC的前后打印出堆的信息
-Xloggc:/opt/logs/service/gc_xx_xx_xx.log 日志文件的输出路径
如需了解更多请参考:
https://blog.csdn.net/iverson2010112228/article/details/82885976

常用命令

jmap -heap pid 查看堆内存使用情况
jstat -gcutil pid 查看gc情况
S0: 新生代中Survivor space 0区已使用空间的百分比

S1:新生代中Survivor space 1区已使用空间的百分比

E: Eden已使用空间的百分比

O:Old已使用空间的百分比

M:metaspace使用百分比

CCS:类指针压缩空间使用率 Compressed class space utilization as a percentage.

YGC:从应用程序启动到当前,发生Yang GC 的次数

YGCT:从应用程序启动到当前,Yang GC所用的时间【单位秒】

FGC:从应用程序启动到当前,发生Full GC的次数

FGCT:从应用程序启动到当前,Full GC所用的时间

GCT:从应用程序启动到当前,用于垃圾回收的总时间【单位秒】

top -H -p pid 查看进程占用资源
jstack pid > xxx.txt 导出栈中信息

gc日志打印解释

2019-10-25T11:37:03.856+0800: [GC (Allocation Failure) [PSYoungGen: 64512K->10721K(75264K)] 64512K->13593K(247296K), 0.0190788 secs] [Times: user=0.05 sys=0.00, real=0.02 secs] 
2019-10-25T11:37:06.058+0800: [GC (Allocation Failure) [PSYoungGen: 75233K->10749K(75264K)] 78105K->23753K(247296K), 0.0161954 secs] [Times: user=0.05 sys=0.01, real=0.02 secs] 
2019-10-25T11:37:06.211+0800: [GC (Metadata GC Threshold) [PSYoungGen: 20229K->10733K(75264K)] 33232K->23849K(247296K), 0.0071751 secs] [Times: user=0.00 sys=0.00, real=0.01 secs] 
2019-10-25T11:37:06.218+0800: [Full GC (Metadata GC Threshold) [PSYoungGen: 10733K->0K(75264K)] [ParOldGen: 13115K->21510K(121344K)] 23849K->21510K(196608K), [Metaspace: 20164K->20159K(1067008K)], 0.0519726 secs] [Times: user=0.19 sys=0.01, real=0.05 secs]
2019-10-25T11:37:07.550+0800: [GC (Allocation Failure) [PSYoungGen: 64512K->3986K(107520K)] 86022K->25504K(228864K), 0.0067501 secs] [Times: user=0.00 sys=0.00, real=0.01 secs] 
2019-10-25T11:37:08.570+0800: [GC (Metadata GC Threshold) [PSYoungGen: 87649K->8662K(133120K)] 109167K->30252K(254464K), 0.0093102 secs] [Times: user=0.01 sys=0.00, real=0.01 secs] 
2019-10-25T11:37:08.579+0800: [Full GC (Metadata GC Threshold) [PSYoungGen: 8662K->0K(133120K)] [ParOldGen: 21590K->29605K(181760K)] 30252K->29605K(314880K), [Metaspace: 34167K->34167K(1079296K)], 0.0831839 secs] [Times: user=0.14 sys=0.00, real=0.08 secs] 
2019-10-25T11:37:09.665+0800: [GC (Allocation Failure) [PSYoungGen: 122368K->7823K(186368K)] 151973K->37436K(368128K), 0.0082988 secs] [Times: user=0.02 sys=0.00, real=0.01 secs] 
2019-10-25T11:37:10.429+0800: [GC (Allocation Failure) [PSYoungGen: 170639K->13400K(185344K)] 200252K->43021K(367104K), 0.0122756 secs] [Times: user=0.00 sys=0.03, real=0.01 secs] 
2019-10-25T11:37:26.145+0800: [GC (Allocation Failure) [PSYoungGen: 176216K->22012K(236544K)] 205837K->51932K(418304K), 0.0194521 secs] [Times: user=0.01 sys=0.02, real=0.02 secs] 
2019-10-25T11:37:27.130+0800: [GC (Allocation Failure) [PSYoungGen: 236540K->25589K(242176K)] 266460K->64567K(423936K), 0.0285009 secs] [Times: user=0.05 sys=0.02, real=0.03 secs] 
2019-10-25T11:37:29.486+0800: [GC (Metadata GC Threshold) [PSYoungGen: 227175K->33256K(292864K)] 266153K->76296K(474624K), 0.0314799 secs] [Times: user=0.08 sys=0.00, real=0.03 secs] 
2019-10-25T11:37:29.518+0800: [Full GC (Metadata GC Threshold) [PSYoungGen: 33256K->0K(292864K)] [ParOldGen: 43039K->62297K(261120K)] 76296K->62297K(553984K), [Metaspace: 57041K->57041K(1101824K)], 0.1802803 secs] [Times: user=0.48 sys=0.02, real=0.18 secs] 
2019-10-25T11:37:30.735+0800: [GC (Allocation Failure) [PSYoungGen: 259584K->9377K(299008K)] 321881K->71683K(560128K), 0.0089734 secs] [Times: user=0.00 sys=0.00, real=0.01 secs] 
2019-10-25T11:37:32.941+0800: [GC (Allocation Failure) [PSYoungGen: 268961K->19235K(356352K)] 331267K->81549K(617472K), 0.0231564 secs] [Times: user=0.03 sys=0.02, real=0.02 secs] 
2019-10-25T11:37:35.511+0800: [GC (Allocation Failure) [PSYoungGen: 341283K->27219K(359424K)] 403597K->89557K(620544K), 0.0253650 secs] [Times: user=0.08 sys=0.00, real=0.03 secs] 
2019-10-25T11:37:36.994+0800: [GC (Allocation Failure) [PSYoungGen: 349267K->31531K(433152K)] 411605K->93877K(694272K), 0.0348279 secs] [Times: user=0.06 sys=0.05, real=0.04 secs] 
  • 2019-10-25T11:37:03.856+0800
    打印时间戳,按照年月日时分秒
  • [GC (Allocation Failure)] / Full GC (Metadata GC Threshold)
    本次gc原因,Allocation Failure 标识由于内存大小不足而发生的gc
    Metadata GC Threshold 标识元空间内存不足,发生gc
  • [PSYoungGen: 64512K->10721K(75264K)] 64512K->13593K(247296K)
    PSYoungGen :gc类型
    64512K->10721K(75264K) 64512K->13593K(247296K)
    前面一组:
    64512K:PSYoungGen发生之前新生代内存占用
    10721K:PSYoungGen发生之后新生代内存占用
    75264K:新生代内存占用总大小
    后面一组:
    64512K:PSYoungGen发生之前JVM堆内存占用
    10721K:PSYoungGen发生之后JVM堆内存占用
    75264K:JVM堆内存占用总大小

你可能感兴趣的:(记录一次生产jvm调优)