我们正在尝试在一台机器上部署 mongrel 实例。一台服务器的最佳 mongrel 实例数量是多少?由于一个实例可以处理并发连接,我认为每个核心启动超过 1 个实例没有任何好处。如果超过这个数量,线程就会争夺 CPU。我们的前辈为 4 个核心分配了 10 个实例,但我认为这只会引起 CPU 争用。有明确的答案/意见吗?
我曾经看到过这样一个问题:有多少个杂种实例?
但确实不够具体。
答案1
一位同事给 Thin 的作者发了一封电子邮件,确认每个核心有 1 个 Thin 实例。对于超线程核心来说,这更有趣,但这可能是另一个问题。
同事说 mongrel 会阻塞 IO。Thin 使用 eventmachine 来避免阻塞 IO,并使用 Mongrel 作为 HTTP 库。
答案2
Mongrel 实例可以处理并发连接,但您确定所有代码路径都不会阻塞吗?我记得有些 gem 仍然存在阻塞,这可能会给您带来麻烦。
在这种情况下,我不会寻找硬性规则,而是依靠测量。设计一个提供预期流量合理近似值的测试,并比较不同的配置。