podman
(xiaoshan)
1
我们线上的服务是基于K8S部署的容器,最近频繁接收到告警,内存过高,排查发现存在正常的GC,容器的内存也在正常的释放,
但是整个机器的内存却在不断上升,看着像是,容器中的内存回收后,没有还给操作系统的感觉,但是又不知道怎么排查了,大佬们有没有排查思路
补充,Java的xms和xmx参数设置的是一致的,按理来说,申请到最大内存后并不会释放内存给操作系统,但是操作的可用内存却一直减少
– 补充添加,当前业务涉及到文件读取操作,读取完后也会做成一个文件,同过feign发送出去,目前也在怀疑网络IO层引起的问题
3 Likes
podman
(xiaoshan)
3
感觉很类似,就是GC后,操作系统的缓存还在缓慢的上升,我们的这个需求有个文件做成,IO buffer的使用,打算先排查一下IO buffer看看
Phantom
(凛冬将至)
5
排查一下告警或者OOM前后的日志,是否存在内存泄漏相关的代码报错?
podman
(xiaoshan)
6
未发生OOM异常,GC正常回收,操作系统的内存占用却在一直上升
Miguel
(Tu)
8
有看过容器resource配置的初始申请内存和limit内存么?有个邪门歪道,就是申请内存和limit设置成一样 当超限之后自动kill掉重新拉 如果能接受pod经常重启的话。。。。
Miguel
(Tu)
10
哈哈,假设服务是纯粹无状态的 重启也只是数据不好看 大不了删库跑路 ::
podman
(xiaoshan)
11
哈哈哈,其实我们目前线上操作也是重启,只不是申请流程监测内存,隔一段时间重启一次