我非常绝望地寻找解决方案。我正在 AWS 上运行 Kubernetes 集群 (v1.16.7)。
节点规格为: 它是一个亚马逊 EC2 t3.medium实例与4GB RAM和 AMI:k8s-1.11-debian-stretch-amd64-hvm-ebs-2018-08-17与内核:4.9.0-7-amd64
我的主要问题是我发现内核中的内存使用量增加,这导致我的节点中出现更快的内存不足问题。进一步来说:
free -m
:
total used free shared buff/cache available
Mem: 3895 3470 130 3 294 204
Swap: 0 0 0
目前这表明我实际使用(非缓存或可回收内存)就在附近3.4GB.
还有输出sudo smem -twk
:
Area Used Cache Noncache
firmware/hardware 0 0 0
kernel image 0 0 0
kernel dynamic memory 1.5G 184.1M 1.3G
userspace memory 2.2G 111.1M 2.1G
free memory 125.5M 125.5M 0
----------------------------------------------------------
3.8G 420.7M 3.4G
匹配的输出free
通过以下方式:
-
used列于
free
= smem
内核非缓存 + 用户空间非缓存 = 3.4GB
-
增益/缓存列于
free
= smem
内核缓存+用户空间缓存 = 294MB
Also kubectl top node
匹配用户空间内存 in smem
显示大约 2.2GB,总容量也是如此top
and ps aux
正在运行的进程。
然而我的/proc/meminfo/
:
MemTotal: 3989436 kB
MemFree: 133272 kB
MemAvailable: 209416 kB
Buffers: 10472 kB
Cached: 255628 kB
SwapCached: 0 kB
Active: 2340712 kB
Inactive: 80612 kB
Active(anon): 2156712 kB
Inactive(anon): 1752 kB
Active(file): 184000 kB
Inactive(file): 78860 kB
Unevictable: 0 kB
Mlocked: 0 kB
SwapTotal: 0 kB
SwapFree: 0 kB
Dirty: 1404 kB
Writeback: 0 kB
AnonPages: 2155264 kB
Mapped: 111500 kB
Shmem: 3220 kB
Slab: 121856 kB
SReclaimable: 36260 kB
SUnreclaim: 85596 kB
KernelStack: 17440 kB
PageTables: 32972 kB
NFS_Unstable: 0 kB
Bounce: 0 kB
WritebackTmp: 0 kB
CommitLimit: 1994716 kB
Committed_AS: 8704948 kB
VmallocTotal: 34359738367 kB
VmallocUsed: 0 kB
VmallocChunk: 0 kB
HardwareCorrupted: 0 kB
AnonHugePages: 0 kB
ShmemHugePages: 0 kB
ShmemPmdMapped: 0 kB
HugePages_Total: 0
HugePages_Free: 0
HugePages_Rsvd: 0
HugePages_Surp: 0
Hugepagesize: 2048 kB
DirectMap4k: 518120 kB
DirectMap2M: 3614720 kB
DirectMap1G: 0 kB
显示内核内存使用总量Slab + SReclaimable + SUnreclaim of ~238MB距离很远1.3GB显示在smem
这也总结在free
report.
那么内核中多余的内存都花在哪里了???
还有其他方法可以检查内核内存的使用情况吗?
Thanks!
UPDATE
经过多次尝试和配置实验,问题被缩小到 FluentD 日志系统。
我们有一个应用内日志记录机制,针对使用 TCP 的 FluentD 服务@type forward
source然后使用将其发送到 ElasticSearch@type elasticsearch
*match。同样的 FluentD 服务还捕获本地日志文件并发送到 Elastic,没有任何问题,所以看起来它与 TCP 通信有关......
使用的图像是quay.io/fluentd_elasticsearch/fluentd:v3.1.0
from https://github.com/kokuwaio/helm-charts/tree/main/charts/fluentd-elasticsearch
v11.3.0舵图