我是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个带线程的进程?
答案 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答案是,这取决于!