3

我有一个包含大约 30 个 Ruby On Rails 应用程序的服务器。

当我(重新)启动 30 个应用程序中的 1 个时,所有其他应用程序都无法访问,它们似乎正在等待 1 个应用程序(重新)启动。

即使是命令:passenger-status,似乎也要等到 1 应用程序(重新)启动。

这是正常行为吗?或者如何解决这个问题?

(虚拟)服务器规格:

  • CPU:3核x 2.2GHz
  • 内存:4GB
  • 硬盘:40GB

服务器软件:

  • CentOS 6.3 版(最终版)
  • Nginx版本:nginx/1.0.12
  • Ruby 1.9.3p125(2012-02-16 修订版 34643)[x86_64-linux]
  • Phusion 乘客版 3.0.18

Nginx/乘客配置:

passenger_max_pool_size 50;
passenger_min_instances 1;
passenger_max_instances_per_app 2;

如果需要,我很乐意提供更多详细信息。

更新** 安装了乘客企业和nginx,现在这些应用程序不再相互打扰了。所以我认为这个问题已经解决了passenger_rolling_restarts;

4

2 回答 2

2

嗯...看起来这可能是Passenger开源版本的“功能”。来自http://phusionpassenger.com/enterprise

在 Phusion Passenger 的开源版本中,重新启动应用程序涉及关闭所有应用程序进程并生成新进程。由于启动新进程可能需要很长时间(取决于应用程序),因此在重新启动过程中访问者可能会遇到响应缓慢的情况。通过滚动重启,Phusion Passenger Enterprise 在后台重启您的应用程序进程。

因此,选项似乎是:

1) 升级到Passenger企业版

2)切换到其他服务器。

呸。

于 2013-01-22T20:08:06.367 回答
0

实际上,这里有两个问题在起作用:

  1. 当不使用滚动重启时,您的访问者将不得不等到重启完成。正如卓斯波罗所说。
  2. 此外,Phusion Passenger 3 在为应用程序生成第一个进程时会锁定整个应用程序池。在此期间,无法处理任何请求。后续进程生成在后台完成,滚动重启生成也在后台完成,因此它们不会影响请求。在 Phusion Passenger 4(当然还有 Phusion Passenger Enterprise 4)中,这种锁定限制已经完全解除:一切都是异步的。
于 2013-02-27T11:32:17.277 回答