k8s集群中某节点内存利用低,但是swap利用率高,超过90%处理记录
服务器上内存利用率低,但是swap分区利用率很高的处理记录
·
环境介绍
服务器: 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
直接定位是那些进程占用最多。
找到了这里,就好处理多了,我们这里找出来是我们自己的一个微服务引起的,所以直接交给开发处理。
更多推荐
已为社区贡献6条内容
所有评论(0)