记一次jvm参数配置

顺便把相关的再贴出来一下:
解决 Docker 容器里无法使用JDK的jmap等命令问题
JDK 工具使用以及 CPU 100%排查过程、OOM排查
关于JVM整理的知识点和你在一起
.
JVM调优参数_跑起来要带风! CSDN博客
JVM系列三:JVM参数设置、分析 NewRatio SurvivorRatio - 博客园
项目一启动就发生两次FGC原因
什么是 Minor GC/Major GC - 知乎

# jvm 参数优化之前 ===> 启动 4天, full gc 5次 young gc 1000+次
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# jvm 参数优化之前 ===> 启动 4天, full gc 5次   young gc 1000+次

docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
e5d0c04827ab 52969d3207dc "/bin/sh -c 'java ${…" 4 days ago Up 4 days new-bi-service
6861c07368c3 f54b34579541 "/bin/sh -c 'java ${…" 13 days ago Up 4 days hawkeye-service
da06fb7f850f dc5a38c3e570 "/bin/sh -c 'java ${…" 2 weeks ago Up 4 days message-service

jstat -gcutil 1 1000 # new-bi-service ===> 启动 4天, full gc 5次 young gc 1031次
S0 S1 E O M CCS YGC YGCT FGC FGCT GCT
0.00 56.25 75.78 97.03 94.67 92.40 1031 7.675 5 0.639 8.314
0.00 56.25 75.89 97.03 94.67 92.40 1031 7.675 5 0.639 8.314
0.00 56.25 76.36 97.03 94.67 92.40 1031 7.675 5 0.639 8.314
0.00 56.25 76.47 97.03 94.67 92.40 1031 7.675 5 0.639 8.314
0.00 56.25 89.13 97.03 94.67 92.40 1031 7.675 5 0.639 8.314
0.00 56.25 89.24 97.03 94.67 92.40 1031 7.675 5 0.639 8.314
0.00 56.25 89.60 97.03 94.67 92.40 1031 7.675 5 0.639 8.314

jstat -gcutil 1 1000 # hawkeye-service ===> 启动 4天, full gc 5次 young gc 1378次
S0 S1 E O M CCS YGC YGCT FGC FGCT GCT
68.23 0.00 31.98 87.31 94.80 92.50 1378 11.380 5 0.912 12.292
68.23 0.00 32.34 87.31 94.80 92.50 1378 11.380 5 0.912 12.292
68.23 0.00 32.86 87.31 94.80 92.50 1378 11.380 5 0.912 12.292
68.23 0.00 32.98 87.31 94.80 92.50 1378 11.380 5 0.912 12.292
68.23 0.00 33.50 87.31 94.80 92.50 1378 11.380 5 0.912 12.292
68.23 0.00 33.63 87.31 94.80 92.50 1378 11.380 5 0.912 12.292
# jmap 不能查看,加 docker 参数 => --cap-add=SYS_PTRACE
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
# jmap 不能查看,加 docker 参数 => --cap-add=SYS_PTRACE

完整 docker run 参数
-d -v /home/amoros/new-bi-service:/root/new-bi-service -v /opt/skywalking-agent:/opt/skywalking-agent --net host --cap-add=SYS_PTRACE

docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
fefc0ea25e6d 73a2ab44f015 "/bin/sh -c 'java ${…" 25 minutes ago Up 25 minutes new-bi-service

jstat -gcutil 1 1000 # new-bi-service ===> 启动 25min, full gc 4次 young gc 28次
S0 S1 E O M CCS YGC YGCT FGC FGCT GCT
0.00 0.00 88.85 31.76 95.24 93.43 28 0.197 4 0.312 0.508
0.00 0.00 88.86 31.76 95.24 93.43 28 0.197 4 0.312 0.508
0.00 0.00 88.86 31.76 95.24 93.43 28 0.197 4 0.312 0.508
0.00 0.00 88.87 31.76 95.24 93.43 28 0.197 4 0.312 0.508
0.00 0.00 88.88 31.76 95.24 93.43 28 0.197 4 0.312 0.508

jmap -heap 1 # new-bi-service
Attaching to process ID 1, please wait...
Debugger attached successfully.
Server compiler detected.
JVM version is 25.332-b09

using thread-local object allocation.
Parallel GC with 2 thread(s)

Heap Configuration:
MinHeapFreeRatio = 0
MaxHeapFreeRatio = 100
MaxHeapSize = 2579496960 (2460.0MB)
NewSize = 53477376 (51.0MB)
MaxNewSize = 859832320 (820.0MB)
OldSize = 108003328 (103.0MB)
NewRatio = 2
SurvivorRatio = 8
MetaspaceSize = 21807104 (20.796875MB)
CompressedClassSpaceSize = 1073741824 (1024.0MB)
MaxMetaspaceSize = 17592186044415 MB
G1HeapRegionSize = 0 (0.0MB)

Heap Usage:
PS Young Generation
Eden Space:
capacity = 827326464 (789.0MB)
used = 794996168 (758.1674270629883MB)
free = 32330296 (30.83257293701172MB)
96.09219607895922% used
From Space:
capacity = 9961472 (9.5MB)
used = 0 (0.0MB)
free = 9961472 (9.5MB)
0.0% used
To Space:
capacity = 16252928 (15.5MB)
used = 0 (0.0MB)
free = 16252928 (15.5MB)
0.0% used
PS Old Generation
capacity = 163053568 (155.5MB)
used = 51779776 (49.38104248046875MB)
free = 111273792 (106.11895751953125MB)
31.756297415092444% used

39120 interned Strings occupying 4104448 bytes.
# jvm 参数优化之后 => 运行 16hours, YGC=30次,FGC=0次
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
# jvm 参数优化之后 => 运行 16hours, YGC=30次,FGC=0次

Dockerfile
------
FROM adoptopenjdk/openjdk8:centos

LABEL name=TaoPanfeng

ENV APP=new-bi-service
ENV WORKDIR=/root/$APP
ENV SKYWALKING="-javaagent:/opt/skywalking-agent/skywalking-agent.jar -DSW_AGENT_NAME=$APP -DSW_AGENT_COLLECTOR_BACKEND_SERVICES=10.11.12.206:11800 -DSW_AGENT_SPAN_LIMIT=2000"
# 堆min 堆max E 栈 元空间初始化 元空间最大
ENV JVM_ARGS=" -Xms2g -Xmx2g -Xmn1g -Xss1m -XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=256m "

WORKDIR $WORKDIR

# 时间同步(容器与Linux主机)
RUN cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo Asia/Shanghai > /etc/timezone

COPY ./$APP/target/$APP.jar /$APP.jar

EXPOSE 18004

CMD java ${SKYWALKING} ${JVM_ARGS} -jar /$APP.jar
------

docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
d7b69b0999ed 03a24aed43cf "/bin/sh -c 'java ${…" 16 hours ago Up 16 hours hawkeye-service
b792646ca08a e37559a7d1d6 "/bin/sh -c 'java ${…" 16 hours ago Up 16 hours message-service
f7117e3139b7 c8fee11de56a "/bin/sh -c 'java ${…" 16 hours ago Up 16 hours new-bi-service

jstat -gcutil 1 1000 # new-bi-service
S0 S1 E O M CCS YGC YGCT FGC FGCT GCT
12.50 0.00 76.18 6.56 94.82 92.59 30 0.496 0 0.000 0.496
12.50 0.00 76.18 6.56 94.82 92.59 30 0.496 0 0.000 0.496
12.50 0.00 76.19 6.56 94.82 92.59 30 0.496 0 0.000 0.496
12.50 0.00 76.46 6.56 94.82 92.59 30 0.496 0 0.000 0.496
12.50 0.00 76.46 6.56 94.82 92.59 30 0.496 0 0.000 0.496

jstat -gcutil 1 1000 # hawkeye-service
S0 S1 E O M CCS YGC YGCT FGC FGCT GCT
0.00 25.27 64.77 8.93 94.93 92.69 31 0.458 0 0.000 0.458
0.00 25.27 64.77 8.93 94.93 92.69 31 0.458 0 0.000 0.458
0.00 25.27 65.03 8.93 94.93 92.69 31 0.458 0 0.000 0.458
0.00 25.27 65.03 8.93 94.93 92.69 31 0.458 0 0.000 0.458

jmap -heap 1 # new-bi-service
Attaching to process ID 1, please wait...
Debugger attached successfully.
Server compiler detected.
JVM version is 25.332-b09

using thread-local object allocation.
Parallel GC with 2 thread(s)

Heap Configuration:
MinHeapFreeRatio = 0
MaxHeapFreeRatio = 100
MaxHeapSize = 2147483648 (2048.0MB)
NewSize = 1073741824 (1024.0MB)
MaxNewSize = 1073741824 (1024.0MB)
OldSize = 1073741824 (1024.0MB)
NewRatio = 2
SurvivorRatio = 8
MetaspaceSize = 268435456 (256.0MB)
CompressedClassSpaceSize = 260046848 (248.0MB)
MaxMetaspaceSize = 268435456 (256.0MB)
G1HeapRegionSize = 0 (0.0MB)

Heap Usage:
PS Young Generation
Eden Space:
capacity = 1029177344 (981.5MB)
used = 1014942776 (967.9248580932617MB)
free = 14234568 (13.575141906738281MB)
98.61689843028647% used
From Space:
capacity = 23068672 (22.0MB)
used = 2884080 (2.7504730224609375MB)
free = 20184592 (19.249526977539062MB)
12.50215010209517% used
To Space:
capacity = 21495808 (20.5MB)
used = 0 (0.0MB)
free = 21495808 (20.5MB)
0.0% used
PS Old Generation
capacity = 1073741824 (1024.0MB)
used = 70480320 (67.21527099609375MB)
free = 1003261504 (956.7847290039062MB)
6.56399130821228% used

下面是我的截图

在这里插入图片描述