我试图找出为什么我的服务器上的内存消耗在过去几个小时内开始不断增加。我尝试在应用程序级别上查找原因,但没有成功。这就是为什么现在要调查可能的服务器原因。我不是服务器管理方面的专家,因此非常感谢您的帮助。先是普通内存被吃掉了,现在swap消耗也在不断增加。
我的服务器运行在 CentOS 7 上,内核为 3.10.0-514.26.2.el7.x86_64
解决方案
最后,该问题被确定是由最近更新的服务器库引起的。接受的答案是一个很好的提醒,当您因内存使用而感到压力时,可以追溯到问题出现之前系统中发生的更改。
我一直在寻找并发现非常有用的一些技巧在如何找到哪些进程占用了所有内存?
我在下面列出了我使用过的命令,在这种情况下可能会有所帮助。
ps auwx --对 rss 进行排序- 按内存使用情况排序的进程
ps -fu 用户名- 由用户处理
顶部使用/分析显示,在我的案例中,有许多挂起的应用程序 cron 启动的进程。我将 htop 配置为输出 PID 和 PPID,因为我需要关联PPID到/var/日志/cron记录的进程。
自由-m
total used free shared buff/cache available
Mem: 7565 6525 440 47 599 657
Swap: 8191 2612 5579
猫 /proc/meminfo
MemTotal: 7747260 kB
MemFree: 253960 kB
MemAvailable: 498904 kB
Buffers: 6160 kB
Cached: 189076 kB
SwapCached: 467788 kB
Active: 5572588 kB
Inactive: 1258540 kB
Active(anon): 5498664 kB
Inactive(anon): 1185908 kB
Active(file): 73924 kB
Inactive(file): 72632 kB
Unevictable: 0 kB
Mlocked: 0 kB
SwapTotal: 8388604 kB
SwapFree: 5686452 kB
Dirty: 104 kB
Writeback: 0 kB
AnonPages: 6168400 kB
Mapped: 68668 kB
Shmem: 48676 kB
Slab: 456672 kB
SReclaimable: 389064 kB
SUnreclaim: 67608 kB
KernelStack: 7232 kB
PageTables: 106848 kB
NFS_Unstable: 0 kB
Bounce: 0 kB
WritebackTmp: 0 kB
CommitLimit: 12262232 kB
Committed_AS: 10244216 kB
VmallocTotal: 34359738367 kB
VmallocUsed: 26276 kB
VmallocChunk: 34359705340 kB
HardwareCorrupted: 0 kB
AnonHugePages: 5191680 kB
HugePages_Total: 0
HugePages_Free: 0
HugePages_Rsvd: 0
HugePages_Surp: 0
Hugepagesize: 2048 kB
DirectMap4k: 83968 kB
DirectMap2M: 8300544 kB
如何继续查找服务器的运行方式或内存使用配置是否存在任何问题?
答案1
一般来说,您需要随着时间的推移收集信息以查看内存泄漏的情况。
简单的目标问题是:
1) 系统最近发生了哪些变化?
2)更新了什么?
3)是否有任何信息将这些更改与内存泄漏联系起来。
之后,您可以使用系统上可用的程序。我没有 Cent 系统,但必须有一个系统监视器应用程序来显示正在运行的进程使用了多少内存。
可以top
在命令行上用于相同的操作。在这两种情况下,您都需要监控它们并识别正在增长的内容。
如果它是服务器并且有像 Nagios 之类的东西监视它,您可以为不同的系统应用程序设置内存监视器并让它映射应用程序的内存使用情况。
这些都是非常笼统的内容,但它确实为您提供了一些方向。
标记