欢迎您访问365答案网,请分享给你的朋友!
生活常识 学习资料

pod的内存一直增加原因与解决

时间:2023-07-11
现象描述

阿里云监控上的内存使用是6.8G,针对channel的内存配置,内存限制是8G,内存使用率为85%
所以告警了。
但是jvm的xmx配置是3G,正常情况下pod占用的内存4-5G应该就足够了,但是实际却使用了7G的内存,为什么?

在虚拟容器中:
root@coding-editor-channel-84dc87b897-lvfvz:/app# free -m
              total        used        free      shared  buff/cache   available
Mem:          62097       20594        7384        3078       34119       38356

说明:
共62G内存
使用了20G
剩余7G
共享3G
缓存占用34G
实际可用38G


top指令:

cat /proc/memoryinfo查看
https://segmentfault.com/a/1190000022518282

巨坑:pod中所有top、free、cat /proc/memoryinfo结果都是机器的数据,不是pod自身的数据

pod的内存与cpu使用查看方法:
kubectl top pod coding-editor-channel-84dc87b897-lvfvz -n peiyou-xiaohoucode-prod

mazhen@mazhendeMacBook-Pro .kube % kubectl top pod coding-editor-channel-84dc87b897-lvfvz -n peiyou-xiaohoucode-prod

W0207 15:23:13.981693   35658 top_pod.go:140] Using json format to get metrics、Next release will switch to protocol-buffers, switch early by passing --use-protocol-buffers flag
NAME                                     CPU(cores)   MEMORY(bytes)   
coding-editor-channel-84dc87b897-lvfvz   22m          6977Mi   

内存一直增加的原因

 https://www.jianshu.com/p/c0d5a40fe9e8

Linux下经常会遇到buff/cache内存占用过多问题,尤其是使用云主机的时候最严重,由于很多是虚拟内存,因此如果buff/cache占用过大的,free空闲内存就很少,影响使用;

通常内存关系是:

普通机器:total=used+free

虚拟机器:total=used+free+buff/cache

pod中java进程占用的内存基于xmx参数机会是固定的,但是关于缓存内存:由于没有达到limit的,所以缓存一直不会释放,缓存占用的内存会一直增加,所以pod占用的内存也会一直增加。


解决:清理缓存

 手动释放缓存对内存的占用:

可以使用一下命令去清除一下cache内存

1)注意:先执行sync,再修改/proc/sys/vm/drop_caches,含义:运行sync将dirty的内容写回硬盘,防止数据丢失。

echo 1 > /proc/sys/vm/drop_caches

echo 2 > /proc/sys/vm/drop_caches

echo 3 > /proc/sys/vm/drop_caches

drop_caches的值可以是0-3之间的数字,代表不同的含义: 0:不释放(系统默认值) 1:释放页缓存 2:释放dentries和inodes 3:释放所有缓存

或者定时任务清除缓存:

Linux的buff/cache占用内存过高解决方法_一条很咸的的博客-CSDN博客_buff/cache过高https://blog.csdn.net/weixin_47758362/article/details/107513091

实际操作步骤

在pod所在机器上操作步骤如下:
[admin@iZ8vbcshuo9swn0k3d5zgmZ ~]$ whoami
admin
[admin@iZ8vbcshuo9swn0k3d5zgmZ ~]$ sudo -s
[root@iZ8vbcshuo9swn0k3d5zgmZ admin]# free -m
              total        used        free      shared  buff/cache   available
Mem:          62097        8194       24868        3079       29034       51256
Swap:             0           0           0
[root@iZ8vbcshuo9swn0k3d5zgmZ admin]# sync
[root@iZ8vbcshuo9swn0k3d5zgmZ admin]# cat /proc/sys/vm/drop_caches
0
[root@iZ8vbcshuo9swn0k3d5zgmZ admin]# echo 1 > /proc/sys/vm/drop_caches
[root@iZ8vbcshuo9swn0k3d5zgmZ admin]# free -m
              total        used        free      shared  buff/cache   available
Mem:          62097        8202       46740        3079        7154       51247
Swap:             0           0           0

pod的内存占用情况:6.9G --> 4.8G,详情如下:
mazhen@mazhendeMacBook-Pro .kube % kubectl top pod coding-editor-channel-84dc87b897-lvfvz -n peiyou-xiaohoucode-prod

W0207 15:23:13.981693   35658 top_pod.go:140] Using json format to get metrics、Next release will switch to protocol-buffers, switch early by passing --use-protocol-buffers flag
NAME                                     CPU(cores)   MEMORY(bytes)   
coding-editor-channel-84dc87b897-lvfvz   22m          6977Mi          
mazhen@mazhendeMacBook-Pro .kube % kubectl top pod coding-editor-channel-84dc87b897-lvfvz -n peiyou-xiaohoucode-prod

W0207 15:35:45.340326   36032 top_pod.go:140] Using json format to get metrics、Next release will switch to protocol-buffers, switch early by passing --use-protocol-buffers flag
NAME                                     CPU(cores)   MEMORY(bytes)   
coding-editor-channel-84dc87b897-lvfvz   18m          4485Mi  


 

Copyright © 2016-2020 www.365daan.com All Rights Reserved. 365答案网 版权所有 备案号:

部分内容来自互联网,版权归原作者所有,如有冒犯请联系我们,我们将在三个工作时内妥善处理。