我的 RubyOnRails 应用程序是使用 Apache 配置背后的常用杂种包设置的。我们已经注意到,我们的 Mongrel Web 服务器内存使用量在某些操作上会增长得非常大,我们真的希望能够随时动态地对选定的 Mongrel 进程进行优雅的重启。

但是,由于某些原因,我将不进行讨论,所以有时在我们处理请求的同时不要中断Mongrel可能非常重要,因此我认为简单的杀死进程并不是解决问题的办法。

理想情况下,我想向 Mongrel 发送一个信号,说“完成你正在做的任何事情,然后在接受更多连接之前退出”。

是否有标准技术或最佳实践?

最佳答案

我对Mongrel的源代码进行了更多调查,结果发现Mongrel安装了一个信号处理程序来捕获标准进程终止(TERM)并正常关闭,因此我毕竟不需要特殊的过程。

您可以从在处理请求的同时杀死Mongrel时获得的日志输出中看到此工作。例如:

** TERM signal received.
Thu Aug 28 00:52:35 +0000 2008: Reaping 2 threads for slow workers because of 'shutdown'
Waiting for 2 requests to finish, could take 60 seconds.Thu Aug 28 00:52:41 +0000 2008: Reaping 2 threads for slow workers because of 'shutdown'
Waiting for 2 requests to finish, could take 60 seconds.Thu Aug 28 00:52:43 +0000 2008 (13051) Rendering layoutfalsecontent_typetext/htmlactionindex within layouts/application

关于ruby-on-rails - 如何优雅地关闭 Mongrel Web 服务器,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27743/

10-09 18:56