根据系统内存使用情况终止或恢复进程

根据系统内存使用情况终止或恢复进程

考虑一个内存有限的系统,比如一个较小的 VPS。假设有几个进程需要保持活动状态,并且有一个进程“P”会很好,但不是绝对必要的。我想要做的是在活动较少的时候保留 P,但是当活动超过某个阈值时,杀死 P,直到活动再次降低,此时我希望 P 恢复。我还不确定“活动”是什么意思,但它可以是以下任何一种:内存使用量、交换使用量、服务器负载值。

我已经在使用 Monit,所以如果可以用 Monit 来实现这一点就好了。请记住,我的意思不是过程内存使用情况,我的意思是总体系统加载。不过,如果其他东西可以完成这项工作,我不必使用 Monit。

答案1

就像 cjc 所说,解决这个问题的最佳方法是提供足够的交换以保持所有进程运行。

如果您有许多服务想要保持可用(但不一定处于活动状态/运行状态),您可能会考虑对inetd它们进行 -ing。这样,只有当有人实际连接到服务器上的特定端口时,它们才会启动。缺点:并非所有协议都有inetd实现。

答案2

这是一个老问题,但是我的答案类似的问题涵盖了这一点。

简短版本:您可以使用 STOP 和 CONT 信号来暂停和恢复大多数内存密集型进程,并且有一个自动化工具可以在服务器崩溃时为您执行此操作。

相关内容