博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
docker应用,后端服务出现OOM情况排查
阅读量:4968 次
发布时间:2019-06-12

本文共 1432 字,大约阅读时间需要 4 分钟。

参考:
 
 
默认情况下,JVM的Max Heap Size是系统内存的1/4,假如我们系统是8G,那么JVM将的默认Heap≈2G。
 
# docker logs compose_cwtpro-back_1
Exception in thread "http-nio-8080-Acceptor-0" java.lang.OutOfMemoryError: GC overhead limit exceeded
28-Feb-2019 08:59:19.035 SEVERE [http-nio-8080-ClientPoller-0]
java.lang.OutOfMemoryError: GC overhead limit exceeded
 
Exception in thread "http-nio-8080-exec-89" java.lang.OutOfMemoryError: GC overhead limit exceeded
Exception in thread "http-nio-8080-exec-58" java.lang.OutOfMemoryError: GC overhead limit exceeded
Exception in thread "http-nio-8080-exec-123" java.lang.OutOfMemoryError: GC overhead limit exceeded

 

# docker exec -it compose_cwtpro-back_1 bash
# java  -XshowSettings:vm  -version
 
 
从监控页面获取的信息是,在故障时间点,后端业务的内存使用量突然飙升到接近4.3G,因此导致OOM

 

设置参数:
JAVA_OPTS="-server -Xms6g -Xmx6g -XX:PermSize=256m -XX:MaxPermSize=512m -XX:-OmitStackTraceInFastThrow"      //由于compose文件里面没有声明相关jvm参数,因此采用默认。导致初始最大堆栈为系统内存的1/4(4G)。最终突然的流量上升,导致OOM。
 
验证设置是否有效:
# docker exec -it 2f24707d7a97 bash
# ps -ef | grep java
# jinfo -flag MaxHeapSize 7   //打印对应pid的最大堆栈

 

对比主91.17,设置未重启及JAVA_OPTS未生效的:

3.87G 基本与截图一中通过java  -XshowSettings:vm  -version获取的最大堆栈符合(容器启动未限制容器可使用内存,默认读取/proc/meminfo为最大可以内存,未设置docker启动限制cpu及内存情况下,默认MaxHeapSize为可用最大内存的1/4)
 
 
查看堆内存中的对象数目、大小统计直方图,如果带上live则只统计活对象,如下:
# jmap -histo:live 26590 | less
 
用jmap把进程内存使用情况dump到文件中,再用jhat分析查看。jmap进行dump命令格式如下:
# jmap -dump:format=b,file=/tmp/v2x_dump 7
 

 

转载于:https://www.cnblogs.com/wplvqj/p/10537188.html

你可能感兴趣的文章
centos iptables
查看>>
unity3d 移动与旋转 2
查看>>
寻找二叉查找树中比指定值小的所有节点中最大的那个节点
查看>>
如何设置输入框达到只读效果
查看>>
RT3070 USB WIFI 在连接socket编程过程中问题总结
查看>>
MIS外汇平台荣获“2013年全球最佳STP外汇交易商”
查看>>
LeetCode 题解之Add Digits
查看>>
hdu1502 , Regular Words, dp,高精度加法
查看>>
20120227_CET6
查看>>
SpringBoot在idea中的热部署配置
查看>>
MyEclipse连接SQL Server 2008数据库的操作方法
查看>>
leetcode【67】-Bulb Switcher
查看>>
JS验证图片格式和大小并预览
查看>>
laravel5.2 移植到新服务器上除了“/”路由 ,其它路由对应的页面显示报404错误(Object not found!)———新装的LAMP没有加载Rewrite模块...
查看>>
编写高质量代码--改善python程序的建议(六)
查看>>
windows xp 中的administrator帐户不在用户登录内怎么解决?
查看>>
[spfa] Jzoj P4722 跳楼机
查看>>
代码审计入门后审计技巧
查看>>
Linux-Rsync服务器/客户端搭建实战
查看>>
接口和抽象类有什么区别
查看>>