今年年初的时候,我写了一篇
RoR部署方案深度剖析的文章,分析了Rails的进程运行方式下各种部署方案的优缺点,以及采用什么部署方案最优的话题。当时我没有给出具体的性能评测数据,因为我觉得运行的机制原理很清楚的情况下,没有做评测的必要性。但不管怎么说,一份详细的性能评测数据还是更有说服力,因此我很欣喜的看到ShiningRay的这份评测报告有多么宝贵的价值。
浅析Ruby on Rails部署方案
ShiningRay的博客文章
在这份评测报告当中,ShiningRay给出了更多的主流部署方案、详细的分析和丰富的测试数据,可以算是RoR部署方案性能测试之集大成者了。所以没什么好说的,强烈推荐阅读!当然我会建议你在阅读该文档之前,不妨先阅读我在年初写的
RoR部署方案深度剖析,会更加有助于你了解ShinningRay的评测报告。
引用一下评测的结论部分:
ShiningRay 写道
Lighttpd的三种方案占据了前三位,Lighttpd+FastCGI是性能最高的部署方式。这种方式比另一种流行方案Nginx+Mongrel的方式性能提升了高达50%!FastCGI的好处在此体现出来:
- 二进制协议,无需HTTP的解析
- 与前端可以建立持久链接
- 没有锁和上下文切换的开销
另外Lighttpd相对于Nginx的优势在于请求和响应的接收缓冲区很大,省去多次接收和发送的开销。
Lighttpd+Thin的方式的性能列第三位,这点似乎出乎意料之外,但实际上是因为Lighttpd 1.5支持对HTTP后端建立HTTP KeepAlive链接。在对后端单独的测试中,小并发下的Thin的KeepAlive测试性能并不比FastCGI差,同时Thin实现了非阻塞 IO,而FastCGI则是阻塞式的。相反,HAproxy和Nginx则都不支持HTTP KeepAlive。
而Swiftiply的方式也显示出了强劲的性能,应该是得益于它的“让后端主动连接到Swiftiply”的这种特殊的结构。
当前备受关注的Passenger的部署方式在本案中并没有显示出特别的性能上的优势,不过如果将并发链接数放在300以内,则 Apache2.2/Prefork + Passenger的部署方式的平均每秒响应数上升为204.03,这样看来,倘若为Apache进行一些优化配置,依然不失为一种高效的部署方案。而同时Passenger又是最容易配置的一种方案,能达到这种效果已经非常令人满意。
HAproxy + Mongrel并限制链接数为1,则是一种稳定、保守的部署方式,虽然在这里性能不出众,但是稳定性非常好。
最后,与Nginx相关的三种方案都排在了该榜的末尾,由于Nginx的反向代理负载均衡缺少一些高级的特性以及Rails本身的特性而导致其不适合单独应用在Rails程序的部署上:
- 缺少到后台服务器端的链接数限制的能力,这导致了Mongrel在接受大量请求时将时间消耗在上下文切换和锁的争用上。
- 缺乏建立到后台服务器端的持久链接的能力,这导致了在链接的打开、建立、关闭上花费了额外的开销。
分享到:
- 2008-07-08 11:55
- 浏览 9636
- 评论(8)
- 论坛回复 / 浏览 (6 / 5130)
- 查看更多
相关推荐
首先,RoR性能优化涉及到多个层面,包括应用程序的部署、服务器配置以及代码优化。在部署方面,操作系统的选择至关重要。RoR通常在Unix类操作系统上运行最佳,如RHEL、CentOS、Ubuntu和SuSE Linux。对于AMD Opteron ...
压缩包内的文件“books.sql”很可能是一个数据库的备份文件,可能是为了演示或者测试RoR应用的数据操作。这个文件可以被导入到MySQL数据库中,创建或更新一个与RoR应用相关的数据表。导入后,开发者可以使用这些数据...
`rake-0.7.3.gem`使得你可以定义任务,并通过命令行执行,简化了项目的构建、测试和部署流程。 `actionwebservice`是Rails早期版本中用于创建Web服务的组件,允许Rails应用程序提供SOAP接口。然而,自Rails 3之后,...
NULL 博文链接:https://xuxiangpan888.iteye.com/blog/266696
而“Ror”(Residual-of-Residual)则是对ResNet的一种扩展,进一步优化了网络的性能,尤其在图像分类任务上表现突出。 **ResNet模型核心思想** ResNet的核心是引入了“残差块”(Residual Block),通过引入一个...
Ruby on Rails(简称RoR或Rails)是一种基于Ruby语言的开源Web应用框架,它遵循Model-View-Controller(MVC)架构模式,旨在提高开发效率并提供简洁、优雅的代码结构。"ror实例"可能指的是在学习或实践中,通过创建...
7. **测试驱动开发(TDD)**:RoR鼓励TDD,提供了Rspec、Cucumber等测试工具,确保代码质量。 8. **Scaffold**:快速生成基本CRUD(创建、读取、更新、删除)操作的代码,用于快速搭建应用原型。 9. **ActiveSupport...
Ruby on Rails(简称ROR)是一个基于Ruby编程语言的开源Web应用程序框架,它遵循MVC(模型-视图-控制器)架构模式,旨在促进开发过程的简洁性和效率。Ruby on Rails的核心理念是“Don't Repeat Yourself”(DRY,...
Ruby on Rails(RoR)是一种基于Ruby语言的开源Web应用程序框架,它遵循MVC(Model-View-Controller)架构模式,旨在简化Web开发过程。在这个选题方向中,我们主要探讨的是与RoR相关的源代码分析和学习。源代码是...
虽然这是一个较老的版本,但在当时背景下,它能很好地支持Rails 3.0.9。 - **安装过程**:Ruby的安装相对简单,只需访问官方提供的下载页面,选择适合Windows系统的安装包进行下载。安装过程中,默认选项即可,如有...
破解版本的JAR包,放到本地磁盘,ECLIPUS直接用,到JVM设置直接加 -noverify -javaagent:D:\javarebel.jar
- **书籍推荐**:《Agile Web Development with Rails》是一本经典的RoR教程,适合进一步深入了解RoR的开发实践。 - **在线社区**:参与Ruby on Rails官方论坛或Stack Overflow等社区,获取最新的技术资讯和解答开发...
基于RoR的博客系统,代码风格简单清晰,前后太完善,适合初学者。
《机遇ROR的图书管理系统》是一份以Ruby on Rails(简称ROR)技术为核心,旨在构建高效、便捷的图书管理解决方案的学习资料。Ruby on Rails,是基于Ruby编程语言的开源Web应用框架,它遵循MVC(Model-View-...
标题 "我的ror的第一天" 暗示了这是一个关于Ruby on Rails (RoR) 开发初体验的分享,其中可能涵盖了作者初次接触RoR时的学习过程、遇到的问题以及解决方法。Rails是Ruby的一个Web开发框架,它以MVC(模型-视图-控制...
在Ruby on Rails(简称ROR)框架下,处理文件的上传与下载是一项常见的需求,尤其是在构建包含媒体内容的应用程序时。本文将基于给定的文件信息,详细阐述如何在Rails应用中实现文件的上传与下载功能,包括数据库...