POD Out of memory heap
1.定位步骤
kubectl top node -n xxx 或者kubectl describe nodes 查看 pod申请资源是否合理
kubectl top pod --containers 会显示容器cpu 内存消耗细节,这个命令每个pod会显示三行
# 示例输出:
POD名称 空列 CPU 内存 # (1) 旧版汇总行(兼容性保留)
POD名称 POD CPU 内存 # (2) 系统容器(pause容器)
POD名称 业务容器名 CPU 内存 # (3) 实际业务容器
2. kubectl exec -it xx -n bbb -- bash
# 查看默认最大堆大小(字节)
java -XX:+PrintFlagsFinal -version | grep MaxHeapSize
# 运行时查看实际使用的堆大小
java -XX:+PrintCommandLineFlags -version
ps -ef |grep java 找到对应的应用的pid
# 3. 查看运行时JVM参数
jcmd <pid> VM.flags
# 4. 或者查看所有GC相关参数
jcmd <pid> VM.flags | grep -i gc
#查看堆真实使用情况
jmap -heap pid
修改 dockerfile中 java的初始化参数
# -XX:+PrintGCDetails -Xloggc:/logs/gc.log -XX:+PrintGCTimeStamps -XX:GCLogFileSize=10M
CMD java -Xms512m -Xmx2048m -XX:G1HeapRegionSize=8m -XX:+UseG1GC -jar /xxxx/xxx/xx.jar

查看栈

浙公网安备 33010602011771号