服务器内存使用非常高的新的Linux dedi框 – 如何find问题?

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

这些脚本运行在运行CentOS和CPanel的1.5GB内存虚拟主机上,运行得非常好。

现在他们在新的专用服务器上,内存已经从14.1GB的内存下降到了9.9GB。 我不能看到这是我的脚本,所以假设有什么别的东西使用我所有的记忆。 我怎样才能看到什么是吃所有的资源?

注意:这些服务器之间的唯一区别(从我的angular度来看)是我的crons在旧服务器上每5分钟检查一次,而现在他们每分钟检查一次,其中大约有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的队列对他们。 qmail可以吃掉内存吗?

如果我省略了一些必要的信息,请告诉我。

谢谢。

你唯一关心的是这个:

 [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 

这是用户空间进程用于执行的内存量。 内核将获取任何额外的内存,以便进行磁盘caching和其他性能的原因,但是会在用户空间应用程序需要时释放内存。

你可能想运行一些像top一样的东西,并试图找出(通过使用%MEM字段)消耗内存的东西。

请记住,未使用的内存是浪费的内存! 🙂

这个命令会列出所有按内存使用sorting的进程:

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

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

真正的问题是。 。 。 当你还有10GB的空闲空间的时候,你为什么在意如果你使用了更多的内存呢?

我使用这个命令深入挖掘:

 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 "" }' 

其中列出了我的服务器上的所有进程以及他们正在使用多less内存。 然后这告诉我,qmail是垃圾邮件给我的消息。 我不需要qmail所以已经删除它。 服务器已经从增长到100%的内存占用率达到了6%……现在我并不讨厌linux这么多xD

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