k8s内存一直增大(进程rss和free的使用率相差较大)问题排查

编程入门 行业动态 更新时间:2024-10-07 05:19:01

k8s内存一直增大(进程rss和free的<a href=https://www.elefans.com/category/jswz/34/1771248.html style=使用率相差较大)问题排查"/>

k8s内存一直增大(进程rss和free的使用率相差较大)问题排查

近期发现有台线上的k8s节点服务器的内存总会超过90%。

初步解决

设定迁移k8s的pod应用通过节点反亲和性

    spec:containers:.....affinity:	  nodeAffinity:requiredDuringSchedulingIgnoredDuringExecution:nodeSelectorTerms:- matchExpressions:- key: kubernetes.io/hostnameoperator: NotInvalues:- 192.168.1.1

迁移部分应用后,内存确实降低了,但是过段时间内存又上来了。

进一步观察

free 命令查看节点的内存利用率,总内存一共32 G ,使用了29G。
通过 ps aux|awk ‘{a+=$6};END{print a}’ 计算进程内存总和,发现总共进程总和才21G,有8G的内存不在进程使用中。即使迁移迁移走部分pod释放掉部分的内存后,内存还是会涨上来。而且进程的内存的使用很稳定并没有持续的增加。
这里附上meminfo文件的详解。
mem详解

观察socket连接

在查看prometheus监控时候发现有socket_alloc达到了34万之多,而且持续增大。

查看/proc/net/socketstat 。ss -s 查看socke连接。结果就是有30多万的链接alloc并处在了closed状态。mem是328839 * 4K 大概1G多,这边虽然没有8G的大小,但是30多万的alloc肯定是异常的。

cat /proc/net/sockstat
[root@0001~]# cat /proc/net/sockstat
sockets: used 320193
#alloc为已分配的,mem是占用的内存页数,生产环境内存页大小为4K
TCP: inuse 67 orphan 1 tw 827 alloc 318263 mem 328837 
UDP: inuse 11 mem 5
UDPLITE: inuse 0
RAW: inuse 0
FRAG: inuse 0 memory 0

这里附上socket的一些说明
一个socket至少4K的rmem和4K的wmem,再加上一个1k的fd差不多8G多的空间。感觉就是这的问题。现在就是找到这些socket进程。

文件描述符

这里socket虽然关闭了,但是socket链接的fd是没有释放的。fd对应的是打开文件数。现在使用lsof来查看打开文件数,发现命令会卡住,一直得不到响应,应该是数据态度卡住了,无奈ctrl+c终止掉。
转换思路30多万的fd去proc下应该很容易找到
ls /proc/*/fd
发现到了21841这个进程就输出大量的fd文件。那就是这个进程了。

[root@0001 fd]# ps aux|grep 21841
root     21841 14.7  4.3 2848756 1436820 ?     Ssl  Sep13 5118:36 java

这个进程的rss只有1.4G,尝试重新部署该pod,部署完之后,内存下降,free和ps 内存大致相当

[root@0001 ~]# ps aux|awk '{a+=$6};END{print a}'
21269484
[root@0001 ~]# free -ktotal        used        free      shared  buff/cache   available
Mem:       32762520    21949648     2632040      115680     8180832    10287116
Swap:             0           0           0

到此还要进行后续的该应用的问题排查。

更多推荐

k8s内存一直增大(进程rss和free的使用率相差较大)问题排查

本文发布于:2024-02-27 18:40:09,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1765915.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:使用率   进程   较大   内存   k8s

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!