Unicorn Rails - 在生产模式下启动时占用100%的CPU

Kri*_*rma 7 ruby unicorn ruby-on-rails-3

我们正在使用Unicorn_Rails + nginx.它在我的系统中的开发模式和生产模式下运行良好(4GB Ram,Intel(R)Core(TM)2 Duo CPU P8600 @ 2.40GHz)我可以在本地系统中启动10个工作人员但是无法启动超过2个生产中的任何情况有时它可以工作,但需要等待15-20 mts在启动unicorn_rails时始终需要99.6%的CPU

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

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

whi*_*ark 2

Rails 启动受 CPU 限制,它(几乎)始终使用 100% 的 CPU。看起来您尝试施加到该实例上的负载太大;每个 CPU 核心只需要 1 个工作线程,而 m1.small 只有一个。

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

  • 那么,那就奇怪了。Amazon 实例不是很强大,但是启动 Rails 绝对不应该花费 15 分钟——哎呀,在我的旧 Pentium III 上 1.5 分钟就足够了!(顺便说一下,如果你只有 1 个工作线程, preload_app 不会改变任何东西)。尝试通过“strace -f”(无守护进程)启动它,并检查某些系统调用是否花费比预期更多的时间。 (2认同)