首页 > 其他分享 >容器内微服务OOM问题排查及解决

容器内微服务OOM问题排查及解决

时间:2023-03-10 09:59:19浏览次数:28  
标签:内微 OOM 查询 排查 缓存 对象 规则 客户端

背景

问题现象:测试环境,有一个功能的所有接口请求超时,查看微服务下的日志,发现OOM了

问题环境:Kubernetes环境,微服务部署在pod的容器中

 

问题排查

1、环境出现问题时,首先查看服务日志,发现OOM了:

2、发生OOM时,会在容器内自动生成一个hprof快照文件,立马拷贝到宿主机(pod重启后会丢失),然后再拷贝到本机:

3、在本机使用JProfiler打开快照文件,首先查看堆内存中类的大小排序:

 4、看到了一个熟悉的实体类,初步怀疑有可能是这个实体类占用内存太多导致的。点开"最大对象",会发现最大的两个分别是ArrayList和Mongo对象:

  5、选定对象后,查看两个大对象中的内容,分别为:

ArrayList对象:

 Mongo对象:

 

 6、通过以上信息,基本可以判断是查询mongo中的app_ids_info_rule_details表时,返回了大量的SysRuleDetailDO对象导致的

7、将这两个对象在图表中显示,可以看到是哪一行代码进行的mongo查询:

8、找到对应代码:

 9、找相关同学了解,发现出现OOM问题前,有大量的客户端多次调用查询系统规则详情的接口,这样就会在极短时间内大量的查询mongo库的操作,导致内存中有大量的该对象

 

解决方案

通过了解发现:

  • 每次查询规则数据后,会在内存中进行大量的计算,最终得到一个很简单的数据结构然后返回给客户端。
  • 每次导入规则数据后,服务端会收到规则变化的回调消息

对于上面的两点,可以发现很好的优化点:

  • 额外增加一张表,当收到规则变化的回调消息时,提前计算后需要返回给客户端的数据,并保存到数据库
  • 为了进一步提升性能,还可以加一个本地缓存
    • 收到规则回调消息后,先写入缓存,再入库
    • 客户端查询规则,先查询缓存,没有命中再查库,然后再刷新缓存

 

标签:内微,OOM,查询,排查,缓存,对象,规则,客户端
From: https://www.cnblogs.com/xuwenjin/p/17170603.html

相关文章

  • cpu、内存问题排查——gperftools 性能测试工具介绍
      在阅读reids源码时发现redis在自身内存管理malloc/frees的时候使用到tcmalloc,google后发现此组件竟然出自google开源的gperftools性能分析工具集,然后发现许多大虾云......
  • EasyCVR通过国标GB28181协议接入设备,设备同步了服务器时间的原因排查
    EasyCVR平台可支持多类型设备、多协议方式接入,可覆盖市面上绝大多数的视频源设备,包括:IPC、NVR、视频编码器、移动执法仪、应急布控球、移动警用单兵、无人机、车机设备、车......
  • mysql invalid conn排查
    mysqlinvalidconn排查服务监控系列文章服务监控系列视频问题背景服务使用golang,客户端库是go-mysql-driver,系统测试环境频繁但是不总是报出invalidconn错误,但实......
  • 一次goroutine 泄漏排查案例
    一次goroutine泄漏排查案例服务监控系列文章服务监控系列视频背景这是一个比较经典的golang协程泄漏案例。背景是这样,今天看到监控大盘数据发现协程的数量监控很奇怪......
  • Opengl-Bloom
    Thebloomchapteriscomplicated.Itcombinesalltheideasfromthechapterswehavelearn.ExtractingbrightcolorGaussianblurBlendingbothtexturesEx......
  • 数据问题排查思路
    1、背景数据开发、数据仓库工作和业务系统开发工作很大的一个不同是,业务系统功能开发一旦完成并通过测试,一般就可以比较稳定地长期运行,因为它的输入是相对稳定的。但是数......
  • mysql内存,mysql oom
    转自:https://mp.weixin.qq.com/s/YYwJM_WZdDG0YFd7Bj380Q1、什么是OOM机制OOM 是OutOfMemory的缩写,中文意思是内存不足。而 OOM机制 是指当系统内存不足时,系统触......
  • 性能测试-模拟oom场景
    1、模拟环境搭建1.1tomcat下载与搭建下载地址:https://tomcat.apache.org/download-90.cgi   1.2解压安装cd/data/jvmpretest#解压tar-zxvfapache-tomc......
  • 排查系统执行SQL与数据库直接执行结果不一致的问题
    目录现象解决过程结论现象系统根据指定的日期范围(LocalDateTime)查询数据库,结果与直接将SQL语句查询不一致,系统查询的并不是期望日期范围的数据。通过LocalDateTime......
  • echarts实现dataZoom区域缩放并修改高度、不与横坐标轴重叠
        参考:https://blog.csdn.net/weixin_46074961/article/details/105950300       https://blog.csdn.net/menghuannvxia/article/details/88736166......