mrb*_*rdo 6 ruby ruby-on-rails ruby-on-rails-3
我一直在使用Ruby Enterprise Edition和Passenger(对于Apache,因为我为其他事情运行Apache)已经有一段时间了,但是我想知道现在服务器上有什么用的新趋势.例如,我听说过Thin,Unicorn ......我也知道1.9.2比REE快,但我想知道RAM消耗.我宁愿让它消耗更少的RAM,即使牺牲一些速度.
谢谢你的建议.
如果你想要最小的内存,你应该尝试Thin.它没有主工作为Unicorn或Passenger,因此使用更少的内存.假设您有一个非常小的应用程序需要在小型VM上运行,那么您可以使用1个瘦工作者+ nginx.我在256MB虚拟机上使用Thin + nginx + postgres运行了几个rails 3.2应用程序,无需交换.
Unicorn速度更快但需要一名主工作者.如果你想在Heroku上运行它是好的,你可以设置2或3个工作者并且在512MB范围内.
如果您的应用程序非常大并且您有太多长时间运行的请求,我会查看jRuby和Thinidad/Torquebox.
我将一些应用程序从MRI + Sidekiq转换为jruby + Trinidad + Trinidad_Scheduler.我在trinidad服务器中使用50个线程池获得大约100-200 req/sec!
我喜欢jRuby的是你可以在一个Rails服务器上组合所有内容.您可以将具有EHcache,调度,后台处理和实际多线程的cache_store放在同一个JavaVM上.
您不需要分别运行redis,memcached,resque或sidekiq.
我不是说他们不好,我喜欢sidekiq和resque,但你可以通过在一个进程中组合所有内容并具有高并发性来降低复杂性.
更先进的企业解决方案是Torquebox,它支持群集并且具有超级可扩展性.但是我的应用程序崩溃时遇到了问题,所以我现在坚持使用特立尼达.
jRuby的缺点?记忆!特立尼达服务器将使用最小512MB,最高2-3GB内存.此外,对于单线程服务器,来自运行Ruby-1.9.3的rails应用程序的单个请求大约是jRuby上相同请求的两倍.
另一种选择是Puma,你可以用美洲狮在MRI上获得完整的多线程.我自己无法在我的应用程序上保持稳定.
因此,这完全取决于您的要求,内存使用情况,完整线程和并发性.
除乘客外,还可以看看Unicorn,Trinidad,Puma和Torquebox.那些似乎是现在的顶级铁路服务器.
有一本很棒的书介绍了如何将您的Rails应用程序转换为jRuby并使用多种方法(如trinidad)部署您的应用程序. http://pragprog.com/book/jkdepj/deploying-with-jruby
Torquebox文档非常好.它非常详细,并解释了如何使用所有Torquebox功能. http://torquebox.org/documentation/
我希望分享我的经验有所帮助.
乘客仍然非常强大,特别是在不久的将来REE自然会支持1.9.您的应用程序可能崩溃的事实,但它不会影响您的计算机上的任何其他内容是一个惊人的功能.部署代码非常简单,因为服务器将继续接受连接,这意味着您可以减少挫折/压力.
但是,就比较而言:
这是一个很好的资源,可以查看所有新服务器的各种比较(包括内存消耗).
它比较了Thin,Unicorn,Passenger,TorqueBox,Glassfish和Trinidad:
http://torquebox.org/news/2011/03/14/benchmarking-torquebox-round2/
| 归档时间: |
|
| 查看次数: |
2811 次 |
| 最近记录: |