与 centos 7.7 相比,Rocky 8 上几乎所有进程的内存使用率(VmRSS)都很高

与 centos 7.7 相比,Rocky 8 上几乎所有进程的内存使用率(VmRSS)都很高

我们正在将一些服务器从 centos 7.7ish 迁移到 Rocky linux 8,我们发现几乎每个进程都使用了 20-50% 的内存,导致机器锁定。

例如在centos上sh:

# sh -c 'egrep "VmRSS|VmSwap" /proc/$$/status'
VmRSS:       664 kB
VmSwap:        0 kB

与洛基对比:

# sh -c 'egrep "VmRSS|VmSwap" /proc/$$/status'
VmRSS:      1136 kB
VmSwap:        0 kB

这只是一个简单的例子;在相同的硬件上,httpd、nginx、postgres 进程都有很大的增加,尽管具体数量从 20% 到 50% 左右不等。

有人能建议一下要查看哪些内容来调试这个问题吗?我们可以查看一些 /proc 设置吗?

内核报告:centos:3.10.0-1160.62.1.el7.x86_64 rocky:4.18.0-348.12.2.el8_5.x86_64

编辑

我们已经更新了 centos 7 内核,使其与 rocky 8 版本相匹配,甚至超过了 rocky 8 版本。Centos 7 的内存使用情况不是增长到与 rocky 8 相同的程度(它增加了一点,可能 3%,正如我所预料的,只是内核膨胀)。所以我们假设这不是内核问题,而是库中的问题(因为这个问题在不同的进程中非常普遍)。

getconf PAGESIZE 对于两个操作系统都返回 4096

/proc/meminfo (请注意,这台机器有交换,而我们的生产机器没有)

MemTotal:        3826180 kB
MemFree:         1292540 kB
MemAvailable:    2010048 kB
Buffers:             100 kB
Cached:          1071740 kB
SwapCached:        76916 kB
Active:          1028020 kB
Inactive:        1219360 kB
Active(anon):     266816 kB
Inactive(anon):  1097744 kB
Active(file):     761204 kB
Inactive(file):   121616 kB
Unevictable:           0 kB
Mlocked:               0 kB
SwapTotal:       1679356 kB
SwapFree:         983108 kB
Dirty:                52 kB
Writeback:             0 kB
AnonPages:       1104196 kB
Mapped:           132244 kB
Shmem:            193280 kB
KReclaimable:      78224 kB
Slab:             130756 kB
SReclaimable:      78224 kB
SUnreclaim:        52532 kB
KernelStack:        5728 kB
PageTables:        31140 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:     3592444 kB
Committed_AS:    3708844 kB
VmallocTotal:   34359738367 kB
VmallocUsed:           0 kB
VmallocChunk:          0 kB
Percpu:             1776 kB
HardwareCorrupted:     0 kB
AnonHugePages:    724992 kB
ShmemHugePages:        0 kB
ShmemPmdMapped:        0 kB
FileHugePages:         0 kB
FilePmdMapped:         0 kB
HugePages_Total:       0
HugePages_Free:        0
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       2048 kB
Hugetlb:               0 kB
DirectMap4k:      370560 kB
DirectMap2M:     3823616 kB

答案1

您可以尝试sysctl -a在两个系统上运行以找出不同之处。查找与、、和等相关vm.swappinessvm.dirty_background_ratio设置vm.overcommit_memory

您可能还想检查 httpd、nginx 和 postgres 配置文件,看看默认值是否已更改。还要检查在 rocky Linux 8 上安装的任何额外软件包是否占用更多内存。例如,对于 Apache/Nginx,请确保检查工作进程/线程的数量以匹配可用的硬件资源。工作进程过多可能会导致内存使用问题。

如果其他方法都失败了,您可以尝试使用类似 Valgrind 工具“Massif”来分析上述进程的内存使用情况,以分析堆内存使用情况。但这是另一回事。

相关内容