Linux 高内存使用率(顶部总不匹配)

Linux 高内存使用率(顶部总不匹配)

我有一个穷人版的 vps - 256MB 专用内存。我安装了 LAMP。目前服务器上还没有网站运行。

内存使用量仍为 225MB(仅剩 31 MB 可用)。

我使用 top 和另一种方法进行了测量。Top 说使用了大约 225mb,但如果我将这些进程加起来,结果只有 20%。

我用来测量内存的另一个脚本:

#!/bin/bash
bean=`cat /proc/user_beancounters`
guar=`echo "$bean" | grep vmguar | awk '{ print $4;}'`
priv=`echo "$bean" | grep privvm | awk '{ print $2;}'`
let totl=guar/256
let used=priv/256
let free=$totl-$used
echo "VPS Memory:"
echo "  total: $totl mb   used: $used mb   free: $free mb"

给出相同的结果(使用了225MB)。

我已经重启了服务器,但仍然有 225MB 内存在使用。我该如何找到罪魁祸首进程?请帮忙!

============

ps efax -o 命令的输出,vsize,rss,%mem,size 表明只有 20%(大约 50MB)被进程实际使用。

(apt-get install imagemagick 由于内存不足而失败。我想我需要使用更大的内存,比如 512 MB。我认为失败可能是由于这种“虚假”的内存使用造成的)。

有什么方法可以知道内存是否确实可用作缓存(顶部显示缓冲区/缓存为 0 - 我听说如果 RAM 可用作缓存,它将显示为“缓冲区或缓存”。

free -m 的输出:

free -m
             total       used       free     shared    buffers     cached
Mem:           256        226         29          0          0          0
-/+ buffers/cache:        226         29
Swap:            0          0          0

其显示可用缓冲区/缓存也为 29 MB :(

答案1

Linux 将使用尽可能多的 RAM 作为缓存,如果其他进程需要更多内存,则会放弃这些缓存。看看这里了解更多信息。

答案2

尝试使用以下链接如何使用哪个进程并更新回来

http://studyhat.blogspot.com/2010/09/memory-use-by-which-process-centos-rhel.html

答案3

尝试这些命令

顶部-n 1

或者

ps efax -o 命令,vsize,rss,%mem,大小

superuser.com 上对此问题的答案也可能有帮助 “如果我执行 ps ef,如何显示每个进程的内存使用情况”

答案4

伙计们,感谢大家的回复。原来 mysql 使用了 139MB 的“虚拟内存”。由于我的 VPS 没有启用 SWAP,因此虚拟内存是从 RAM 中获取的。

(并且 TOP 没有在 % 使用率列中显示虚拟内存 - 所以完全错过了!)。

做了两件好事来减少内存需求:

1)/etc/mysql/my.cnf 中的 skipd-innodb 2)/etc/rc 中的系统 ulimit 为 256

(之前它是无限制的,因此占用巨大的内存)。

欢呼,JP

相关内容