【问题标题】:How to interpret the memory usage figures?如何解释内存使用数据?
【发布时间】:2010-09-19 05:46:13
【问题描述】:
有人可以用实际的方式解释一下吗?示例表示一个使用 Nginx 和 3 个 Mongrel 集群的低流量 Rails 站点的使用情况。我问是因为我的目标是了解页面缓存,想知道这些数字是否对该过程有重要意义。谢谢你。很棒的网站!
me@vps:~$ free -m
total used free shared buffers cached
Mem: 512 506 6 0 15 103
-/+ buffers/cache: 387 124
Swap: 1023 113 910
【问题讨论】:
标签:
ruby-on-rails
memory-management
vps
【解决方案1】:
物理内存已全部用完。为什么?因为它在那里,所以系统应该正在使用它。
您还会注意到系统正在使用 113M 的交换空间。坏的?好的?这取决于。
另见有 103M 的缓存磁盘;这意味着系统已经决定最好缓存 103M 的磁盘并将这 113M 换出;可能您有一些进程正在使用未使用的内存,因此被分页到磁盘。
正如另一位发帖人所说,您应该使用其他工具来查看发生了什么:
- 您的看法:网站在您使用时是否正常运行?
- 基准测试:您的客户看到的响应时间是多少?
- 更细粒度的诊断:
- 顶部:您可以实时查看哪些进程正在使用内存和 CPU
- vmstat:它产生这种输出:
alex@armitage:~$ vmstat 1
procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu-- --
r b swpd 免费缓冲区缓存 si so bi bo in cs us sy id wa
2 1 71184 156520 92524 316488 1 5 12 23 362 250 13 6 80 1
0 0 71184 156340 92528 316508 0 0 0 1 291 608 10 1 89 0
0 0 71184 156364 92528 316508 0 0 0 0 308 674 9 2 89 0
0 0 71184 156364 92532 316504 0 0 0 72 295 723 9 0 91 0
1 0 71184 150892 92532 316508 0 0 0 0 370 722 38 0 62 0
0 0 71184 163060 92532 316508 0 0 0 0 303 611 17 2 81 0
这将向您显示交换是否对您造成伤害(si 上的高数字,所以)并且更容易查看随时间变化的性能统计数据。
【解决方案2】:
根据我的阅读,您已经使用了几乎所有的内存,有 6 M 可用空间,并且将进入大约 10% 的交换空间。一个更有用的工具是使用 top 或 ps 来查看每个单独的 mongrel 在 RAM 中使用了多少。因为您要进行交换,所以您可能会遇到更多的减速。您可能会发现只有 2 个 mongrel 而不是 3 个实际上可能响应更快,因为它可能不会进入交换内存。
页面缓存肯定会大大缩短响应时间,所以如果您的页面是可缓存的(例如,它们没有个人用户独有的内容),我会说一定要检查一下