![如何设置 BluePill 来监控通过 Passenger (mod_rails) 运行的 Rails 应用程序](https://linux22.com/image/501015/%E5%A6%82%E4%BD%95%E8%AE%BE%E7%BD%AE%20BluePill%20%E6%9D%A5%E7%9B%91%E6%8E%A7%E9%80%9A%E8%BF%87%20Passenger%20(mod_rails)%20%E8%BF%90%E8%A1%8C%E7%9A%84%20Rails%20%E5%BA%94%E7%94%A8%E7%A8%8B%E5%BA%8F.png)
我最近启动了一个运行 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 作业。它并不完美。