我在手机上设置了一个警报,当 RAM 使用率超过 90% 时就会收到警报。我还编写了一个脚本来监控所有内存、CPU、RAM 等。
我怎样才能减少RAM的使用,我还有一个清除缓存的脚本...但我不能一直运行它或针对它设置一个cron,因为它会影响实时服务。
我有一个以下脚本:
memory_alarm=`/usr/bin/free -m|grep Mem|awk '{print $3/$2 * 100.0}'|cut -d\. -f1`
当我运行 top 命令时,它显示 66%,几秒钟后收到的 RAM 使用率 95% 的警报
答案1
你没有采取页面缓存free
考虑在内(在输出中的“缓存”列下)。写入磁盘的数据将保存在缓存中,并在文件被删除/替换或可用内存变低且其他进程请求更多内存时刷新。
$ free
total used free shared buffers cached
Mem: 2038308 1890180 148128 504 25072 489884
-/+ buffers/cache: 1375224 663084
Swap: 8386556 7440 8379116
$ /usr/bin/free -m|grep Mem|awk '{print $3/$2 * 100.0}'|cut -d\. -f1
92
$ /usr/bin/free -m|grep Mem|awk '{print ($3-$7)/$2 * 100.0}'|cut -d\. -f1
68
答案2
这是一个非常古老的答案,但我一直看到它。 @Neuro 是正确的,因为 RAM 使用不是(几乎从来不是)问题,因为 Linux 缓存磁盘 I/O。 (与 RAM 访问相比,磁盘 I/O 非常慢,Linux 缓存了从磁盘读取的几乎所有扇区,希望再次需要它......)因此,高 RAM 使用率基本上是无关紧要的。
没有提到的是,主要(或硬)故障(需要磁盘 I/O 的故障)是一个问题,但前提是它们持续且过度。轻微(或软)故障很少会成为问题。什么是持续和过度?就是那个问题。