记一次老商家端应用内存突然飚高原因分析

这篇具有很好参考价值的文章主要介绍了记一次老商家端应用内存突然飚高原因分析。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、排查过程

问题发现是因为当时接到了内存UMP报警信息,如下:

通过查看PFinder发现内存一直在增长,没有停止迹象,触发fullGC也并没有下降趋势:

当机立断,先立即去NP上摘除了此台机器流量,然后继续观察,发现内存依然在不断增长。

随即查看故障分析,并没有得到有效信息:

因为流量已经摘除,那么继续观察到底哪里的问题,约半小时后然后接到了机器的宕机告警如下:

由于在应用启动参数里配置了dump路径,那么就马上去把dump文件下载下来分析。

随后找到对应IP机器的目录,下载了dump文件java_pid432.hprof核对时间没有问题,随即使用MAT工具开展分析,通过泄露分析结果直接就可以看出problem1与problem2都是一个同一个问题,2个线程分别占用1.8G、1.5G:

通过查看问题对应的代码类方法,发现该方法功能是"导出WMS保质期商品数据",该方法会调用库存分页接口查询保质期商品,大致如下:

1、查询无数据直接导出空表;

2、第一页查询总量小于1000的话直接把数据写入第一个sheet并导出表格;

3、第一页查询总量大于1000则循环分页查询,每1000条数据生成一个sheet表格进行导出。

可以看到,org.apache.poi.hssf.usermodel.HSSFWorkbook对象数量已经达到702个了。

翻看具体代码部分如下:

二、解决思路

经过对该功能代码分析,本着先解决问题的原则,先将循环调用功能进行限制,通过ducc配置导出页数大小限制,来避免一直循环调用。

至此,问题初步解决完毕,调整后没有出现问题。

但是,这个功能的优化并没有结束,随后将该问题及功能逻辑反馈给产品及库存相关方,一起讨论解决商家导出的问题,一方面我们要保障商家体验,另一方面又要确保系统稳定性。后续要从这2方面入手进行功能的优化,不断为提升商家体验而努力。

三、总结分析

回过头来咱们再分析以下这个功能,通过系统日志及监控,发现该功能商家日常使用较少,并且大部分商家的保质期商品较少,极少数会存在有非常多保质期商品数据的情况。但是一旦出现这样的问题就会很致命,所以在导出功能设计之初我们就应该考虑到将来任何可能出现的情况,并做好提前的预防。另外就是要做功能的限制,例如导出次数、导出数据量的限制功能来保障商家体验及系统的安全稳定。

另外再说一下,对导出功能的理解,对于商家而已,导出需求是正常的。但是过多大批量数据的一起导出无论对哪个系统来说都是非常危险的一个功能。以下列举了一些个人总结的导出功能设计时的一些常见规则,希望大家一起参与讨论分析,拙见如下:

  • 明确导出数据的价值分析
  • 明确导出数据的使用倾向
  • 明确导出数据的安全要求
  • 明确导出数据的权限控制
  • 明确需要导出的数据量级
  • 明确导出数据的方式方法
  • 明确到仓数据的频率频次
  • 明确导出数据的性能效率
  • 明确导出数据的限制方法
  • 明确导出功能的隔离及降级方案
  • 明确导出数据的格式样式
  • 明确导出数据的下载方案
  • 明确导出数据的错误监控

以上是个人想到的一些导出设计的简单规则,需要产研测一起沟通明确,还希望大家多提提意见,一起完善导出规则。

另外我们再从商家角度来考虑一下导出的目的,个人从询问业务及相关人员,发现商家导出数据有以下一些目的:

  • 存储归档方便查历史资料
  • 利用系统业务数据进行数据分析已指导商家业务工作或给领导汇报工作
  • 导出来使用表格工具等其他商家熟悉的工具进行查看,更便捷便利
  • 对导出的数据进行加工,并用于其他非京东系统的数据输入
  • 无意识的导出并无其他作用

以上是个人总结的一些商家导出的需求目的,其实针对商家导出来说可能还有很多其他目的,我们不能全部都能了解。但是可以积极与商家沟通理解商家的真实目的。

另外,我们需要去分析商家的诉求,挖掘商家需求背后的目的。假如有个服装行业的商家需要做服务订单业务数据、库存数据分析,是否我们可以利用数智侧的系统能力,为商家打造通用的数据分析能力呢,这样既可以避免导出数据手动分析的鸡肋,同时也提升了商家对京东物流的系统使用体验。

以上仅仅代表个人观点,一点愚见,还请大家批评指正!

欢迎大家一起探讨!

作者:京东物流 刘邓忠

来源:京东云开发者社区 自猿其说Tech 转载请注明来源文章来源地址https://www.toymoban.com/news/detail-729324.html

到了这里,关于记一次老商家端应用内存突然飚高原因分析的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 记一次内存泄漏排查

    最近某项目的服务突然告警,cpu超85%,随后就是服务宕机。交付重启服务后恢复正常但是随后不久又开始告警,特别是白天,严重影响客户业务进行。 1、分析日志 查看日志的过程中发现存在内存溢出(OOM),思考要么存在内存泄漏要么业务上触发了某个接口存在大对象,结

    2023年04月16日
    浏览(42)
  • 记一次 Windows10 内存压缩模块 崩溃分析

    在给各位朋友免费分析 .NET程序 各种故障的同时,往往也会收到各种其他类型的dump,比如:Windows 崩溃,C++ 崩溃,Mono 崩溃,真的是啥都有,由于基础知识的相对缺乏,分析起来并不是那么的顺利,今天就聊一个 Windows 崩溃的内核dump 吧,这个 dump 是前几天有位朋友给到我的

    2023年04月26日
    浏览(28)
  • 记一次 .NET 某餐饮小程序 内存暴涨分析

    前些天有位朋友找到我,说他的程序内存异常高,用 vs诊断工具 加载时间又太久,让我帮忙看一下到底咋回事,截图如下: 确实,如果dump文件超过 10G 之后,市面上那些可视化工具分析起来会让你崩溃的,除了时间久之外这些工具大多也不是用懒加载的方式,比如 dotmemory

    2024年02月08日
    浏览(37)
  • 记一次 .NET 某电力系统 内存暴涨分析

    前些天有位朋友找到我,说他生产上的程序有内存暴涨情况,让我帮忙看下怎么回事,最简单粗暴的方法就是让朋友在内存暴涨的时候抓一个dump下来,看一看大概就知道咋回事了。 这个问题说的再多也不为过,一定要看清楚这个程序是如何个性化发展的,可以使用 !address

    2024年02月08日
    浏览(36)
  • 记一次 .NET 某外贸ERP 内存暴涨分析

    上周有位朋友找到我,说他的 API 被多次调用后出现了内存暴涨,让我帮忙看下是怎么回事?看样子是有些担心,但也不是特别担心,那既然找到我,就给他分析一下吧。 这也是我一直在训练营灌输的理念,一定要知道是哪一边的暴涨,否则很可能就南辕北辙了,使用 !addr

    2023年04月23日
    浏览(56)
  • 记一次 .NET 某游戏服务后端 内存暴涨分析

    前几天有位朋友找到我,说他们公司的后端服务内存暴涨,而且CPU的一个核也被打满,让我帮忙看下怎么回事,一般来说内存暴涨的问题都比较好解决,就让朋友抓一个 dump 丢过来,接下来我们用 WinDbg 一探究竟。 拿到 dump 之后,首先要判断是托管还是非托管问题,这决定了

    2024年02月15日
    浏览(40)
  • 记一次 .NET某道闸收费系统 内存溢出分析

    前些天有位朋友找到我,说他的程序几天内存就要爆一次,不知道咋回事,找不出原因,让我帮忙看一下,这种问题分析dump是最简单粗暴了,拿到dump后接下来就是一顿分析。 程序既然会爆,可能是虚拟地址受限,也可能是系统内存不足,可以用 !address -summary 观察下。 从卦

    2024年01月18日
    浏览(38)
  • 记一次 .NET某培训学校系统 内存碎片化分析

    前些天有位朋友微信上找到我,说他们学校的Web系统内存一直下不去,让我看下到底是怎么回事,老规矩让朋友生成一个dump文件丢给我,看一下便知。 要想看托管还是非托管,可以用 !address -summary 观察下内存段。 从卦中信息的 MEM_COMMIT 和 Heap 来看,应该就是托管内存的问题

    2024年02月14日
    浏览(33)
  • 得物-Golang-记一次线上服务的内存泄露排查

    在风和日丽的一天,本人正看着需求、敲着代码,展望美好的未来。突然收到一条内存使用率过高的告警。 告警的这个项目,老代码是python的,最近一直在go化。随着go化率不断上升,发现内存的RSS使用率越飙越高。最终达到容器内存限制后,进程会自动重启。RSS如下图所示

    2024年02月04日
    浏览(50)
  • 记一次 .NET某管理局检测系统 内存暴涨分析

    前些天有位朋友微信找到我,说他们的WPF程序有内存泄漏的情况,让我帮忙看下怎么回事?并且dump也抓到了,网上关于程序内存泄漏,内存暴涨的文章不计其数,看样子这个dump不是很好分析,不管怎么说,上 windbg 说话。 在 .NET调试训练营 中我一直强调要相信数据,不要相

    2024年04月08日
    浏览(96)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包