服务器物理内存的最大使用量(1gb),我应该担心吗?

服务器物理内存的最大使用量(1gb),我应该担心吗?

我有一个运行 apache、mysql 和 nodejs 的 Web 服务器(Solaris)。它始终接近 1gb 物理内存的最大使用量,以下是来自 virtualmin 的一个示例:

Webmin version  1.520   
Virtualmin version  3.81.gpl GPL 
Theme version       7.8     
Time on server  28/Jun/2011 17:58 Kernel and CPU    SunOS 5.11 on i86pc      
CPU load averages   2.21 (1 min) 2.16 (5 mins) 2.07 (15 mins)
Running processes   141      
Real memory 1024 MB total, 934 MB used 
Virtual memory  2 GB total, 1.29 GB used 
Local disk space    16.13 GB total, 2.86 GB used

以下是 top 命令的一个示例:

load averages:  2.44,  2.39,  2.19;   
up 3+22:11:31   18:02:47 142
processes: 140 sleeping, 2 on cpu CPU
states: 76.3% idle, 16.1% user,  7.6%
kernel,  0.0% iowait,  0.0% swap
Memory: 32G phys mem, 1072M free mem,
76G total swap, 76G free swap PID

在谷歌搜索“服务器内存使用情况 solaris”后,我想只要我的交换空间没满,就应该没问题?但我不太确定,想了解一下我的情况。

答案1

好的操作系统总是会使用尽可能多的 RAM,以避免磁盘访问延迟。如果只有一个处理器,服务器负载超过 2 可能会引起担忧,但使用 RAM 而不进行交换则不是问题。

答案2

Solaris 不会拥有运行所需的 procps 包free,因为它利用了 Linux 的内核功能。

为了查看 Solaris 服务器的内存使用情况,此 StackOverflow 问题中几乎迭代了所有可能的方法:Solaris 上查看内存使用情况的方法

top将成为您更好的选择之一,因为您将能够轻松地看到谁在消耗内存,以及您是否应该担心。

为了容量规划的目的,我强烈推荐一些软件,例如sarcollectd来记录您的内存和 CPU 利用率。

答案3

提示符中的“free”表示什么?在现代操作系统中,内存使用量将始终处于/接近最大值,因为未使用的内存是一种浪费。操作系统将默默地占用它认为合理的内存并将其用于缓冲区/缓存,并在进程需要内存时透明地终止这些缓存。现在无法访问 Solaris 机器,但这是我的 Linux 机器的“free”输出:

             total       used       free     shared    buffers     cached
Mem:       2058188    2003372      54816          0     183784    1620076
-/+ buffers/cache:     199512    1858676
Swap:      1052248          0    1052248

2GB 内存,只有 54.8MB“可用”。但是一旦消除缓冲区/缓存,实际上有 1.85GB 可供程序使用。

答案4

我还强烈建议使用 sar,这样您就可以随时跟踪正在发生的事情。分配的内存量实际上并不重要。重要的是系统是否由于内存争用而变慢。您几乎希望将“sar -g”中的“pgscan/s”列始终保持在 0。分页不再是一种扩展内存空间的有效方法。

相关内容