我有一个运行 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
将成为您更好的选择之一,因为您将能够轻松地看到谁在消耗内存,以及您是否应该担心。
为了容量规划的目的,我强烈推荐一些软件,例如sar
或collectd
来记录您的内存和 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。分页不再是一种扩展内存空间的有效方法。