k8s集群中某节点内存利用低,但是swap利用率高,超过90%处理记录

环境介绍

服务器: 6台ubuntu20.4服务器,72核,256G
集群: 使用Microk8s搭建k8s集群。

问题现象

通过prometheus监控发现有一台服务器的swap分区利用率超过90%,但是内存利用率不到50%。

处理步骤

1、检查节点所在pod资源使用情况

根据以往经验,这种情况大部分是此节点上的pod配置了resources.limits 已经不满足现在的业务需求,导致此pod开始大量使用Swap分区的资源。
使用kuboard工具查看此node上的pod资源情况,发现居然没有哪一个pod配置了资源限制,最多就是配置了资源请求。那么排除因为pod资源限制引起的问题。

2、检查内核参数swappiness

cat /proc/sys/vm/swapiness
60 #系统默认,此参数值越高,表示越积极使用swap分区。

猜测可能是这个值太高,调整低一点。

sysctl vm.swappiness=10

结果发现没有swap分区没有回落,排除swappiness的影响。

3、只有使用笨办法,查看Node上所有进程占用swap的情况

使用top命令查看了此服务器上mongodb占用的内存最多,那就先从他下手cat /proc/{PID}/smaps | grep ‘Swap’ 发现所有页加起来不到20M。那么排除mongodb引起的。开始老老实实查看每个进程占用情况:

说到这里,要感谢51上的大佬。使用这个命令直接打印出,PID和对应的占用swap分区的总和。

for i in `cd /proc;ls |grep "^[0-9]"|awk ' $0 >100'` ;do awk '/Swap:/{a=a+$2}END{print '"$i"',a/1024"M"}' /proc/$i/smaps ;done |sort -k2nr

直接定位是那些进程占用最多。
找到了这里,就好处理多了,我们这里找出来是我们自己的一个微服务引起的,所以直接交给开发处理。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值