如何根据内存使用情况监视并重新启动在Docker中运行的应用程序?

时间:2019-04-23 20:17:01

标签: docker memory runit

我有一个在Docker中运行的应用程序,该应用程序会随着时间的流逝而泄漏内存。当内存使用量超过阈值时,我需要定期重新启动此应用程序。只要触发极限时,我可以运行脚本或发送可配置的信号,我的应用程序就可以响应信号或触摸tmp/restart.txt(这是Rails)...,我可以安全地关闭/重新启动进程。

我调查了limiting memory utilization with Docker,但是当达到限制或保留时,我没有看到自定义操作。 SIGKILL不适合我的应用...我需要一些时间进行清理。

我正在使用runit作为容器内的最小初始化系统,并使用ECS进行容器编排。感觉就像是在应用程序或init级别上遇到的问题...杀死容器而不是重新启动进程似乎很繁琐。

过去,我曾使用Monit来实现此目的,但是我不喜欢Monit如何处理pidfile ... ... Monit经常失去对进程的控制。我正在尝试Inspeqtor,它似乎非常适合该法案,但是虽然它支持runit,但没有开箱即用的软件包。

所以我的问题是,如果SIGKILL不适合我的用例,什么是监视进程的内存使用率,然后根据该使用率超过阈值执行清除/重新启动操作的最佳方法是什么?

0 个答案:

没有答案