我有一个穷人版的 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