我们的应用程序是否存在内存泄漏?

我们的应用程序是否存在内存泄漏?

我不确定如何解释运行 WebSphere MQ (WMQ) 的服务器的内存使用情况。主要问题是:WMQ 是否随着时间的推移占用越来越多的内存(是否泄漏内存)或者一切正常,Linux 正在使用我们的 RAM 进行磁盘缓存?

我们有以下 Cacti 图。

这些数据是从 /proc/meminfo 中轮询出来的。现在显示以下输出。

[user@server ~]$ cat /proc/meminfo 
MemTotal:     32956188 kB
MemFree:       3963664 kB
Buffers:       1225024 kB
Cached:       15611124 kB
SwapCached:      34016 kB
Active:       23880484 kB
Inactive:      3279676 kB
HighTotal:           0 kB
HighFree:            0 kB
LowTotal:     32956188 kB
LowFree:       3963664 kB
SwapTotal:     8388600 kB
SwapFree:      8354584 kB
Dirty:            1648 kB
Writeback:           0 kB
AnonPages:    10290180 kB
Mapped:         457704 kB
Slab:          1375028 kB
PageTables:     136452 kB
NFS_Unstable:        0 kB
Bounce:              0 kB
CommitLimit:  24866692 kB
Committed_AS: 19962412 kB
VmallocTotal: 34359738367 kB
VmallocUsed:    382196 kB
VmallocChunk: 34359356007 kB
HugePages_Total:     0
HugePages_Free:      0
HugePages_Rsvd:      0
Hugepagesize:     2048 kB

命令 free -m 显示以下内容现在

[user@server ~]$ free -m 
             total       used       free     shared    buffers     cached
Mem:         32183      28312       3871          0       1196      15245
-/+ buffers/cache:      11870      20313
Swap:         8191         33       8158

根据网站“linuxatemyram dot com”,只有“free -m”中的“-/+ buffers/cache: 11870 20313”行是相关的。

在 Cacti 图表中,您可以清楚地看到“已用内存”自“第 03 周”开始一直在增加。另一方面,“缓存”和“缓冲区”似乎相当稳定。在这种情况下,“已用内存”有什么关系?WMQ 是否泄漏了内存?

答案1

是的,有些东西正在消耗越来越多的内存。不,这不是 VFS(缓冲区和缓存)。无法从您提供的数据得出任何进一步的结论。

你确实需要看看哪些进程/程序正在使用哪些内存 -这提供了更好的指标而不仅仅是查看 RSS / VSZ,但它仍然可能被 COW 页面误导。尝试获取一系列快照,看看更改是否与 cacti 图中的变化相匹配。

答案2

该系统上有大约 20GB 的 RAM 可供进程使用。操作系统将使用空闲 RAM 来缓存文件系统读取,以加快对相同文件的后续读取。随着文件系统的访问越来越多,看到“已用”RAM 随时间缓慢增加是很正常的;您不会因此看到任何性能问题,如果某个进程稍后需要分配这部分 RAM,那么操作系统会很乐意放弃它。

编辑

正如 @symcbean 指出的那样,有些东西正在慢慢消耗更多的内存。如果服务器只用于这一个应用程序,那么这是首先要查看的地方,但我赞同使用 python 脚本的建议,以便更清楚地了解正在发生的事情。

相关内容