如何全面了解 RAM 使用情况

Mat*_*hyn 4 ram htop free

我已经在服务器上安装了 Ubuntu 14.10。服务器的主要任务是运行 MongoDB 安装以及多个 NodeJS 应用程序。NodeJS 应用程序将持续运行并接受来自外部的请求。

时不时地会有大量请求出现,导致某些 NodeJS 应用程序在短时间内使用大量 RAM。我一直在努力监测这一情况,但不确定如何看待我的发现。

到目前为止,我已经使用了两个命令来了解 RAM 使用情况。这些都是

free -m
Run Code Online (Sandbox Code Playgroud)

sudo htop
Run Code Online (Sandbox Code Playgroud)

第一个显示了这一点:

                        total       used       free     shared    buffers     cached                                           
Mem:                     3442       3158       283          6        111       1203                                           
-/+ buffers/cache:                  1842       1599                                                                         
Swap:                    0          0          0    
Run Code Online (Sandbox Code Playgroud)

当我看到这个时,我会说大约 280MB 的 RAM 是免费的。这看起来并不多。

htop 告诉我以下内容:

  1  [|||                                         0.8%]     Tasks: 61, 129 thr; 2 running
  2  [|||                                         1.0%]     Load average: 1.16 1.15 0.93
  Mem[|||||||||||||||||||||||||||||||||||||1979/3442MB]     Uptime: 29 days, 00:23:31
  Swp[                                           0/0MB]   
Run Code Online (Sandbox Code Playgroud)

我现在真的不知道如何阅读这个。有人可以帮我从这里出去吗?

我想我的问题最终归结为这些:

  • 如何了解可用 RAM 量?
  • 什么时候RAM内存太小?300MB算不算小?这么危险吗?

hee*_*ayl 5

TL;DR:只要该-/+ buffers/cache行显示足够的可用内存,您就不必担心。如果它显示可用内存较低并且您不断被swap写入磁盘,那么您需要担心。

解释:

您对当前的 RAM 使用情况感到满意。让我们把free -m它的输出分解一下:

所有列都是free -m不言自明的。需要注意的重要一点是,当内存使用率很高而看不到缓存和缓冲的内存量时,您不需要惊慌。

从输出来看,您已经使用了 3442 MB RAM 中的 3158 MB,简单的减法就会表明您只有 283 MB 的可用空间可分配给新程序。这是不对的,您还需要查看cachedbuffers列,cached它们将显示 RAM 缓存的磁盘数据量,以便更快地访问常用文件,并buffered显示要写入磁盘的数据量。

如您所知,磁盘访问比 RAM 慢得多,因此为了提高性能,将一些磁盘数据存储到 RAM 中是一件好事。您有 1203 MB 的缓存数据和 111 MB 的缓冲数据。这是一件好事,您的内存可以缓存这么多内存,而不只是保持这么多 RAM 空闲。这将大大提高你的表现。

要获取在没有缓存/缓冲的情况下正在使用的实际 RAM 量,请查看该-/+ buffers/cache:行。显示的结果是减去缓存/缓冲量。正如您所看到的,您有 1599 MB 的可用空间,因此在此状态下一切似乎都正常。如果您看到该行中的值较低,那么您需要关注并查看 RAM 使用情况。

另请注意,当要启动新程序且缓存后内存不足时,旧的缓存将自动清除,为新程序腾出空间。因此,只要实际内存使用率不高,并且不断地将内存交换到磁盘,那么在缓存中拥有大量内存是一件好事,因为它可以有效地“使用”内存。