我在Heroku上运行Unicorn。当我们扩大网络动态时,我注意到了。这些新的网络dynos在产生后立即被访问。在我们得到的日志中:
Request timeout" error with 30 seconds limit (i.e. service=30000ms)
一旦dyno开始,流量就会被发送到它。如果Unicorn在这些请求到达时仍在启动子进程,那么它们可能会超时,特别是如果您的应用程序需要一段时间才能启动。
在应用程序完全加载之前,是否有办法生成Unicorn子进程而不会被请求访问?
答案 0 :(得分:0)
这实际上是我之前遇到的其他东西。
基本上,当你扩展时,你会看到你的dyno被创建并且你的slug被部署到它上面。此时你的slug已初始化。路由网格将在发生这种情况时开始发送请求,因为它将dyno看作up并准备摇摆。
然而,(这是我发现问题的地方),你的应用程序需要时间来启动以响应请求(Unicorn已启动,Rails仍在初始化)并且你得到30秒超时。
我能解决这个问题的唯一方法就是让我的应用程序在不到30秒的时间内重复启动,最后通过更新到当前版本的Rails来实现。我也通过更新到try running on Ruby 1.9.3
找到了一些增加