运维:你们 JAVA 服务怎么又又又又出问题了,内存降不下来。

一篇关于JAVA服务内存占用过高引发的运维与开发者之间的故事,通过监控数据和服务器实时指标的分析,发现大量WAITING状态的线程导致内存问题,最终定位为不恰当的线程池使用。解决方案是修复代码并加强code review,避免类似问题发生。
摘要由CSDN通过智能技术生成

在上次在运维老哥友好的和我沟通之后,还消停没几天,今天又来找(问候)我了……

运维:这个服务也是你们的吧,你看这个 JAVA 进程,内存占用都快 3 个 G 了,这机器才 4G,你们堆才配置 2G,都要告警了!这次是真的内存泄露了吧,不是我无知了吧!

又来搞事情……这大哥是对我有意见吗?有了上次的经验,这回更自信了。还是按照惯例,先怼回去

我:“不可能,我们服务非常稳定,不会有这种问题!”

运维:你这哪来的自信和勇气?梁静茹给的吗?你先回去查查再装

看来大哥这回是有备而来啊,难道真是出问题了?有点慌了……

不过还是不能怂,先敷衍下运维老哥,找个借口回去先偷摸查查监控看看

我:行,我待会看看,我先去跟人开个会啊……

分析监控数据

这个服务的堆内存配置的是 2G,历史内存也确实达到过 2G,虽然现在 used 才几百兆……看起来也没啥问题

再加上一些 VM 自己的开销,一共占用 2 个多 G……好像也说的过去

然后我又找到了运维大哥,(友好的)沟通一下……

我:和上次一样啊,没什么区别,上次都解释过那个内存管理的机制了,你咋还说我们有问题?

运维: 你看你们这个服务,配置的是 CMS+ParNew 垃圾回收器吧,上次是你说的这个回收器组合下会释放内存给操作系统吧?那怎么还占用 2G,释放到哪去了?

我:虽然上回测试结果是会释放,但还有一些其他的说法,说是空闲时会增量释放,而且释放成本这么高,不释放又怎么样?

运维:你这话不是打自己脸么?上回说能释放,现在没释放你也说正常,你是不是觉得我傻?

运维大哥好像看出了我是在狡辩……

不释放也正常啊,释放成本这么高,释放后还得重新申请,重新组织内存结构balabalabala……

这话说的我自己都没底气……毕竟上次才测试过 CMS+ParNew 确实会释放,只是时间问题

运维:你继续狡辩,这服务的内存照这个趋势,估计要不要明天就得 OOM,然后系统再给你来个 OOM Killer 的绝杀,你可就开心了!

我:没问题的,这个内存正常,自己的服务,我还能不了解嘛

此时我已经有点不安了,大哥说的有道理啊,万一 OOM Killer了,可不完蛋了!

我:我晚点有空再仔细看看,应该没啥问题,你先忙你的,放心!

上服

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值