如何确定服务器的最佳 ruby​​ thin/mongrel 实例数量和核心数量?

如何确定服务器的最佳 ruby​​ thin/mongrel 实例数量和核心数量?

我们正在尝试在一台机器上部署 mongrel 实例。一台服务器的最佳 mongrel 实例数量是多少?由于一个实例可以处理并发连接,我认为每个核心启动超过 1 个实例没有任何好处。如果超过这个数量,线程就会争夺 CPU。我们的前辈为 4 个核心分配了 10 个实例,但我认为这只会引起 CPU 争用。有明确的答案/意见吗?

我曾经看到过这样一个问题:有多少个杂种实例?

但确实不够具体。

答案1

一位同事给 Thin 的作者发了一封电子邮件,确认每个核心有 1 个 Thin 实例。对于超线程核心来说,这更有趣,但这可能是另一个问题。

同事说 mongrel 会阻塞 IO。Thin 使用 eventmachine 来避免阻塞 IO,并使用 Mongrel 作为 HTTP 库。

答案2

Mongrel 实例可以处理并发连接,但您确定所有代码路径都不会阻塞吗?我记得有些 gem 仍然存在阻塞,这可能会给您带来麻烦。

在这种情况下,我不会寻找硬性规则,而是依靠测量。设计一个提供预期流量合理近似值的测试,并比较不同的配置。

相关内容