我最近启动了一个运行 phusion Passenger 的网站。不幸的是,由于线程冻结,该网站瘫痪了。我能够通过对特定 PID 执行 kill -9 来挽救服务器。尽管如此,我还是认为 Passenger 能够自动管理这一点。我有一台内存为 1GB 的服务器,运行一个 rails 应用程序,Passenger 最多分配了 7 个实例。然而,当我发现该网站瘫痪时,我发现 Passenger 已经生成了 6 个实例,其中一个占用了超过 800mb 的内存,导致服务器交换。
因此,我希望在服务器上设置类似 bluepill 的东西,但我对如何操作有点困惑。主要是因为 bluepill 希望启动/停止它所监控的进程。但是,在我们的例子中,passenger 已经为我们重新启动了进程,因此我们只需要监控 Passenger 实例的 pid,并在它们变得太大时将其终止。
这里有没有人设置过 BluePill 来监控在 Phusion 的 Passenger 下运行的 Rails 应用?任何见解都会很有用。
答案1
如果没有黑客手段,你就无法轻易做到这一点。
破解方法是让 BluePill 启动一个 shell 脚本,该脚本监视您关心的进程,如果超出某个范围,则以 BluePill 会检测到故障的方式退出。
我使用这类东西来监控我的系统,但它是一个每 5 分钟运行一次的 cron 作业。它并不完美。