1个CPU上的Ruby机架应用程序 - 我应该运行多少个进程?

时间:2014-02-13 21:04:50

标签: ruby-on-rails ruby sinatra rack

我是Ruby网络应用程序的新手(来自java)。 我的VPS有1个CPU和2GB的RAM,想玩一些rails / sinatra的东西。

我正在使用Ruby 2.1.0 MRI CPU的数量如何映射到我需要运行的Web服务器进程的数量?我使用puma作为Web服务器并设置了默认线程(0,16)。但是我注意到还有“工作者”选项,它会让另一个进程更好地处理多个请求。

我是否正确理解对于此类设置(1个CPU),运行2个Web服务器进程没有意义?唯一合理的设置是1个带线程的进程?

1 个答案:

答案 0 :(得分:3)

哦,现在这是一个非常大的问题!

进程和线程的数量不一定与CPU的数量相关联。更多的是可用内存量,并发请求数量以及正在进行的“锁定”内容量。

如果您要长时间运行阻止其他请求的请求,那么拥有其他进程可以帮助解决这个问题。使用单个CPU仍然可以有多个进程。

Ruby中有许多不同的服务器以不同的方式处理扩展,Unicorn,Puma,Thin就是其中的一部分。搜索Unicorn vs Puma vs Thin可以在这个主题上发布一些有用的博客文章。

这是一对

http://ylan.segal-family.com/blog/2012/08/20/better-performance-on-heroku-thins-vs-unicorn-vs-puma/ https://www.engineyard.com/articles/rails-server https://www.ruby-forum.com/topic/1822610

关于Ruby中的并发性的一些信息 http://merbist.com/2011/02/22/concurrency-in-ruby-explained/

TL:DR答案是,这取决于!