根据系统内存使用情况杀死或恢复进程

考虑一个内存有限的系统,就像一个小型的VPS。 假设有一些过程需要维持下去,一个过程“P”可以很好地存在,但并不是绝对必要的。 我想要做的是在低活动的时间内保持P,但是当活动超过一定的阈值时,杀掉P直到活动再次降低,此时我要P回来。 我不确定我想要的“活动”是什么意思,但它可能是以下任何一种:内存使用情况,交换使用情况,服务器负载值。

我已经在使用Monit了,所以如果Monit能够完成,这将是一件好事。 请记住,我不是指进程内存使用情况,我的意思是整体系统负载。 我不需要使用Monit来做这件事,但是如果有其他事情可以做的话。

就像cjc说的那样,最好的办法是提供足够的交换来保持所有进程的运行。

如果你有很多服务要保持可用(但不一定是活着的/正在运行的),你可能会考虑使用它们。 然后,只有当有人实际连接到服务器上的特定端口时,才会启动它们。 缺点是:并不是所有的协议都有inetd实现。

而是一个古老的问题,但我对类似问题的回答涵盖了这一点。

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