有没有办法产生Unicorn进程并让它们在访问处理请求之前完全加载?

时间:2012-02-14 04:48:32

标签: ruby-on-rails-3 heroku unicorn

我在Heroku上运行Unicorn。当我们扩大网络动态时,我注意到了。这些新的网络dynos在产生后立即被访问。在我们得到的日志中:

Request timeout" error with 30 seconds limit (i.e. service=30000ms)

一旦dyno开始,流量就会被发送到它。如果Unicorn在这些请求到达时仍在启动子进程,那么它们可能会超时,特别是如果您的应用程序需要一段时间才能启动。

在应用程序完全加载之前,是否有办法生成Unicorn子进程而不会被请求访问?

1 个答案:

答案 0 :(得分:0)

这实际上是我之前遇到的其他东西。

基本上,当你扩展时,你会看到你的dyno被创建并且你的slug被部署到它上面。此时你的slug已初始化。路由网格将在发生这种情况时开始发送请求,因为它将dyno看作up并准备摇摆。

然而,(这是我发现问题的地方),你的应用程序需要时间来启动以响应请求(Unicorn已启动,Rails仍在初始化)并且你得到30秒超时。

我能解决这个问题的唯一方法就是让我的应用程序在不到30秒的时间内重复启动,最后通过更新到当前版本的Rails来实现。我也通过更新到try running on Ruby 1.9.3

找到了一些增加