我在 EC2 实例上设置了 AWS 监控脚本,当内存利用率超过 75% 时会发出警报。目前,我将所有与内存相关的参数发送到 Cloudwatch,但只为 mem-util 设置了 Cloudwatch 警报。
在 Cloudwatch 上,我看到内存利用率超过 97%
但是,当运行 top 命令时,我得到的内存利用率非常不同,大约为 74%:
Tasks: 101 total, 1 running, 61 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.3 us, 0.0 sy, 0.0 ni, 99.7 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 8166940 total, 212124 free, 6232712 used, 1722104 buff/cache
KiB Swap: 0 total, 0 free, 0 used. 1634048 avail Mem
我看到一个类似主题对于 CPU 使用率统计差异,我想知道同样的问题是否也适用于此。更重要的是,在管理可用内存方面,两者中哪一个更可靠?
答案1
看起来 cloudwatch 正在计算正在使用的总内存,而 top 正在计算进程使用的内存,但不用于可轻松回收的缓存/缓冲区。
哪个更合适取决于您的工作量。