您应该使用的工作人员数量很大程度上取决于您的应用程序本身在做什么以及它执行这些事情的频率。不幸的是,实际上并没有一个完美的比率公式适用于每个测试用例。当您考虑到您必须保持服务器运行的 RAM 数量有限这一事实时,这一点变得更加真实。
许多人会建议 CPU Core Count + 1 但这也不正确。您将不得不在存在不同数量的工人的情况下进行测试用例,然后看看事情进展如何。请务必定期检查日志。
在我们的团队中,我们使用一个名为 Nagios 的程序:http: //www.nagios.org
它运行良好,可以检查您的服务器是否有可能发生的许多不同事情,甚至可以提醒您注意它们。当您试图找到完美的平衡时,这可以帮助您很多。
此外,有时您的服务器除了简单地运行您的 rails 实例外,还正在做一些事情,它可能正在运行脚本或处理不必要的信息。确保您的服务器没有做它不需要做的事情,这样您就可以尽可能节省许多 cpu 周期和 RAM。
此外,请确保您正在实现 Unicorn 拥有的这个功能,我们在我们的项目中这样做,它是无价的:
内存增长当一个worker使用太多内存时,god或monit可以向它发送一个QUIT信号。这告诉工人在完成当前请求后死亡。一旦工人死亡,主人就会分叉一个新的,它可以立即为请求提供服务。通过这种方式,我们不必在请求中终止您的连接或受到启动惩罚。-- 取自:https ://github.com/blog/517-unicorn
我还发现了这个类似的问题,可以为您提供一些见解:
https://serverfault.com/q/369811/110682
我希望这会有所帮助。