新的 Linux Dedi Box 上的服务器内存使用率非常高-如何找到问题?

新的 Linux Dedi Box 上的服务器内存使用率非常高-如何找到问题?

我最近为我的应用程序购买了一台运行 CentOS 和 Plesk 的专用服务器。

这些脚本在运行 CentOS 和 CPanel 的 1.5GB RAM VPS 上运行良好。

现在他们在新的专用服务器上,内存已从 14.1 GB 的 RAM 备用内存降至 9.9 GB。我看不出这是我的脚本,所以假设有其他东西占用了我所有的内存。我如何才能看到是什么消耗了所有的资源?

注意:这些服务器之间的唯一区别(从我的角度来看)是,旧服务器上每 5 分钟检查一次我的 cron,而现在每分钟检查一次,并且大约有 60 个。

这是通过 SSH 从“免费”获取的信息 - 虽然我不完全确定它告诉我什么:

[root@h31-3-244-194 ~]# free
             total       used       free     shared    buffers     cached
Mem:      16426796    9373260    7053536          0     390468    3471680
-/+ buffers/cache:    5511112   10915684
Swap:     18481144          0   18481144

编辑:我查看了所有 cron 进程,发现它们有:bin/qmail-queue。qmail 会不会占用内存?

如果我遗漏了一些必需的信息,请告诉我。

谢谢。

答案1

您唯一关心的数字是这个:

[root@h31-3-244-194 ~]# free
             total       used       free     shared    buffers     cached
Mem:      16426796    9373260    7053536          0     390468    3471680
-/+ buffers/cache:    **5511112**   10915684
Swap:     18481144          0   18481144

这是用户空间进程执行时使用的内存量。内核将占用其所能获得的任何额外内存,用于磁盘缓存和其他性能原因,但它会在用户空间应用程序需要时释放这些内存。

您可能想要运行类似的程序top并尝试找出(通过使用 %MEM 字段)是什么消耗了内存。

请记住,未使用的内存就是浪费的内存!:)

答案2

此命令将列出按内存使用情况排序的所有进程:

ps -eo pmem,pcpu,rss,vsize,args | sort -k 1 -r | more

第一列显示进程使用的内存百分比。您可以使用此信息找出哪个进程使用最多内存。

真正的问题是...当您仍然有 10GB 可用内存时,为什么还要关心是否使用更多内存?

答案3

我使用这个命令进行了更深入的挖掘:

ps -eo size,pid,user,command --sort -size | awk '{ hr=$1/1024 ; printf("%13.2f Mb ",hr) } { for ( x=4 ; x<=NF ; x++ ) { printf("%s ",\$x) } print "" }'

它列出了我服务器上的所有进程以及它们占用了多少内存。然后它告诉我 qmail 正在向我发送垃圾邮件。我不需要 qmail,所以已经删除了它。服务器的内存使用率从 100% 增长到 6% ... 我现在不那么讨厌 linux xD

感谢 Kyle Smith 对内存的评论和解释,但我需要将其标记为答案,因为它解释了我的脚本在此服务器上使用更多内存的确切原因。

相关内容