我是 Linux 服务器管理新手,正在考虑是否需要更大的机器。看来我的机器(运行 apache2、php5、ubuntu)在没有流量的情况下使用了 80% 的内存。
top
Mem: 501392k total, 398704k used, 102688k free, 22508k buffers
Swap: 499996k total, 868k used, 499128k free, 242296k cached
free -m
total used free shared buffers cached
Mem: 489 389 100 0 21 236
-/+ buffers/cache: 130 358
Swap: 488 0 487
我不确定我是否读得正确,但看起来 ubuntu 正在使用大量内存进行缓存,但我不确定这有多高效或者我是否应该更改我的服务器配置。
答案1
您的机器有 100MB 的可用空间,而缓冲区和缓存使用了大约 260MB。没有简单的方法可以知道它恰好使用了多少内存作为它“需要”的缓存,或者是否可以通过增加内存来提高性能。过多的磁盘 I/O 是一个好兆头,表明增加内存会有所帮助,因为它将允许更大的缓存。
您的系统使用内存的原因很简单——释放内存没有任何好处。如果内存未被使用,释放内存就是在浪费精力。如果内存被使用,释放内存也是在浪费精力,因为内存必须再次被使用。现代操作系统可以轻松地将内存从一种用途转换为另一种用途,而无需费心释放内存。现代操作系统只有在别无选择时才会释放内存。
答案2
准确了解系统正在做什么可能有点难以理解。这里有一个更图形化的方式来查看你的系统,称为 htop。
您可以使用以下命令安装它:
sudo apt-get install htop
除了显示正在使用的内存量的图形条之外,它还通过颜色编码显示了内存的用途。在下面的示例中,应用程序 (zimbra) 使用以下内容:
大量活动内存(绿色)。
一些缓冲区(蓝色)。
并且一部分交换/缓存在内存中(黄色)。
另外还有一些提示:
你可以使用以下方法监控 Apache 访问日志,检查服务器是否正在使用中:
tail -f /var/log/apache2/access.log
这将为您提供访问日志的实时流。
您还可以使用 iftop,它与 htop 类似,可以图形化地表示哪些流量以哪些速率流向哪些位置。
使用安装
sudo apt-get install iftop
答案3
Linux 几乎总是将所有可用内存用作磁盘缓冲区(= 缓存)。您的机器上也发生这种情况。这是正常现象,无需担心。当您的程序确实需要 RAM 时,缓存页面会被丢弃。
另外,为了更好地了解内存(和其他资源)的使用情况,我建议您查看一个名为“htop”的命令行程序。只需使用 apt-get 安装并从命令行运行它即可。