在上次在运维老哥友好的和我沟通之后,还消停没几天,今天又来找(问候)我了……
运维:这个服务也是你们的吧,你看这个 JAVA 进程,内存占用都快 3 个 G 了,这机器才 4G,你们堆才配置 2G,都要告警了!这次是真的内存泄露了吧,不是我无知了吧!
又来搞事情……这大哥是对我有意见吗?有了上次的经验,这回更自信了。还是按照惯例,先怼回去
我:“不可能,我们服务非常稳定,不会有这种问题!”
运维:你这哪来的自信和勇气?梁静茹给的吗?你先回去查查再装
看来大哥这回是有备而来啊,难道真是出问题了?有点慌了……
不过还是不能怂,先敷衍下运维老哥,找个借口回去先偷摸查查监控看看
我:行,我待会看看,我先去跟人开个会啊……
分析监控数据
这个服务的堆内存配置的是 2G,历史内存也确实达到过 2G,虽然现在 used 才几百兆……看起来也没啥问题
再加上一些 VM 自己的开销,一共占用 2 个多 G……好像也说的过去
然后我又找到了运维大哥,(友好的)沟通一下……
我:和上次一样啊,没什么区别,上次都解释过那个内存管理的机制了,你咋还说我们有问题?
运维: 你看你们这个服务,配置的是 CMS+ParNew 垃圾回收器吧,上次是你说的这个回收器组合下会释放内存给操作系统吧?那怎么还占用 2G,释放到哪去了?
我:虽然上回测试结果是会释放,但还有一些其他的说法,说是空闲时会增量释放,而且释放成本这么高,不释放又怎么样?
运维:你这话不是打自己脸么?上回说能释放,现在没释放你也说正常,你是不是觉得我傻?
运维大哥好像看出了我是在狡辩……
不释放也正常啊,释放成本这么高,释放后还得重新申请,重新组织内存结构balabalabala……
这话说的我自己都没底气……毕竟上次才测试过 CMS+ParNew 确实会释放,只是时间问题
运维:你继续狡辩,这服务的内存照这个趋势,估计要不要明天就得 OOM,然后系统再给你来个 OOM Killer 的绝杀,你可就开心了!
我:没问题的,这个内存正常,自己的服务,我还能不了解嘛
此时我已经有点不安了,大哥说的有道理啊,万一 OOM Killer了,可不完蛋了!
我:我晚点有空再仔细看看,应该没啥问题,你先忙你的,放心!