【问题标题】:Unicorn Rails - Takes 100% CPU while starting in production modeUnicorn Rails - 在生产模式下启动时占用 100% CPU
【发布时间】:2011-10-23 02:04:05
【问题描述】:

我们正在使用 Unicorn_Rails + nginx。 它在我的系统中的开发模式和生产模式下运行良好(4GB Ram,Intel(R) Core(TM)2 Duo CPU P8600 @ 2.40GHz) 我能够在本地系统中启动 10 名工人,但在生产中无论如何都无法启动超过 2 名工人 有时它可以工作,但需要等待 15-20 米 启动 unicorn_rails 时一直占用 99.6% 的 CPU

Intel(R) Xeon(R) CPU E5507 @ 2.27GHz 但它挂在亚马逊( m1.small 实例) 1.73 GB 内存

我发现没有人谈论在任何地方使用 unicorn_rails 启动缓慢...

【问题讨论】:

  • 你发现了吗?我有同样的问题。

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


【解决方案1】:

Rails 启动受 CPU 限制,它将(几乎)一直使用 100% 的 CPU。看起来您试图对该实例施加的负载太大;每个 CPU 核心只需要 1 个 worker,而 m1.small 只有一个。

当您尝试启动 10 个工作器时,它们会共享 CPU 和 I/O,并且大量 I/O 请求总是会降低子系统的速度。您可以在config/unicorn.rb 中添加preload_app true 子句;这应该会缩短启动时间,但在这样的实例上你真的不需要 10 个工作人员。

【讨论】:

  • 感谢您的及时回复。我只是喜欢它..我肯定会尝试使用 preload_app true 。 btb 我在 unicorn.rb conf 文件中只配置了 1 个工作人员。
  • 那么,这很奇怪。 Amazon 实例不是很强大,但启动 Rails 绝对不应该花费 15 分钟——哎呀,在我的旧 Pentium III 上 1.5 分钟就足够了! (顺便说一句,如果你只有 1 个工人, preload_app 不会改变任何东西)。尝试通过strace -f 启动它(没有守护进程)并检查某些系统调用是否比预期花费更多的时间。
  • 我给 -D(守护进程)它需要无限时间。但是当我在没有 -D 的情况下运行它时,它会在 5-10 米之后运行。我离开终端进行会话.. SAD !!!!
  • 从较少的工作人员开始,您可以随时使用 kill -TTIN 随时添加到工作人员池中
  • 我观察到的一件事,如果您提供错误的数据库名称,那么每个独角兽工作者都会不断尝试连接不存在的数据库,在这种情况下,它会占用 100% 的 CPU
猜你喜欢
  • 2012-07-03
  • 1970-01-01
  • 2020-01-24
  • 2016-03-12
  • 1970-01-01
  • 1970-01-01
  • 2012-12-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多