【问题标题】:Is there a way to spawn Unicorn processes and have them load fully before they are accessed to process requests?有没有办法生成 Unicorn 进程并在它们被访问以处理请求之前让它们完全加载?
【发布时间】:2012-02-14 04:48:32
【问题描述】:

我在 Heroku 上运行 Unicorn。我注意到当我们扩大 web dynos 时。这些新的网络测功机在生成后立即被访问。在我们得到的日志中:

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

一旦测功机启动,就会向其发送流量。如果 Unicorn 在这些请求到达时仍在启动子进程,那么它们可能会超时,尤其是当您的应用需要一段时间才能启动时。

有没有办法生成 Unicorn 子进程而不被请求访问,直到应用程序完全加载?

【问题讨论】:

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


    【解决方案1】:

    这其实是另外一回事,也是我以前遇到过的。

    基本上,当您进行扩展时,您会看到您的 dyno 被创建并且您的 slug 被部署到它上面。此时您的 slug 已初始化。路由网格将在这发生的那一刻开始发送请求,因为它认为测功机已启动并准备好摇动。

    但是,(这就是我发现问题的地方),您的应用程序需要一些时间才能启动以响应请求(Unicorn 已启动,Rails 仍在初始化)并且您会获得 30 秒的超时时间。

    我可以解决这个问题的唯一方法是让我的应用程序在 30 秒内重复启动,我最终通过更新到当前版本的 Rails 实现了这一点。通过更新到try running on Ruby 1.9.3

    ,我还发现了一些增长

    【讨论】:

    • 嗨,我目前在 Rails 3.1.3 上运行。你建议3.2倍吗?不幸的是,Heroku Cedar 堆栈还不支持 Ruby 1.9.2。我上次检查时
    • 它绝对支持 1.9.2。 1.9.3 支持目前是测试版,但我发现它绝对没问题。
    • 糟糕,错字。想说的。 Cedar Stack 不支持 1.9.3。但是,是的,它处于实验模式。您是说 Rail 3.2.x 还是 3.1.x 有区别?
    • unicorn.bogomips.org/Unicorn/Configurator.htmlgithub.com/blog/517-unicorn 所述,preload_app 的配置怎么样?您尝试过类似的方法吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-10-08
    • 1970-01-01
    • 2020-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-28
    相关资源
    最近更新 更多