`
antter
  • 浏览: 3046 次
  • 性别: Icon_minigender_1
  • 来自: 上海
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

对于这两天ruby开发网站性能测试总结

阅读更多

这只是个人测试,也是个ruby初学者的测试,如果因优化不周而造成重大误差还请各位能多多指教。

  1. Rails vs Rack vs Merb:
    Rails 性能比Merb差不少,但文档,插件丰富,加上Rack可以高速处理某些需求。又闻Merb要并入Rails,高速处理又有Metal,真是前景无限。
    Rack 一个字快,爽。
    Merb 看上去很美,只是发觉文档太少。不太试合初学者,比如我想让ActiveRecord支持Enum类型,Merb似乎需要自已操刀,而Rails可以拿来就用
    速度上 静态>Rack>Merb>Rails
    速度横向比较
    静态 Rack Merb Rails
    速度 3130 1192 305 180

    (单位:reqs/sec)

  2. Cache:

    page缓存很方便,而且直接生成html,很容易实现全站静化,只是如果每个文件id都放于同一目录下,很难想像几万文件挤在一个目录下。cache还有待学习。似乎fragment能解决这个问题。
    对于很简单的helloworld,action缓存不快反慢。reqs由180下降到150。

  3. 服务器:
    Fastcgi比mongrel快不少。mongrel更易使用。我现在是 development用mongrel,production用fastcgi
    Nginx和lighttpd差不多快,
    apache2的mod_rails性能记得也不错,具体数值忘了,apache2太大型,内存占得多,配置灵活性没Nginx好,且在性能上和Nginx与Lighttpd有不小差距,所以不再予考虑。
  4. 我个人最终取向:
    Nginx+Fastcgi+Rails+Rack 作为我的Rails平台。

另外我的blog是  http://www.jiangmiao.org/blog  最近在学ruby中,ruby现在给我最大的感触就是灵活,方便。

 

2009-1-21补充:

  1. Fastcgi

    经过实践,发现在fastcgi上lighttpd略胜一筹,最佳的性能稳定Rails平台还是为公认的 Lighttpd+Fastcgi. 但不可否认nginx为非常优秀的服务器,特别是他的配置方式,我尤为中意。

  2. Cache

    提到的Fragment Cache与Page Cache为2个不同等级的cache,
    Page提供全文cache,在controller中以caches_page :actionName形式。
    Fragment为区域cache,在views中以 <% cache do %> xxx <%end%> 形式。
    关于Fragment Cache存储方式如文档中提到的

    #内存cache,也是默认的cache
    ActionController::Base.cache_store = :memory_store
    #以文件形式保存
    ActionController::Base.cache_store = :file_store, "/path/to/cache/directory"
    ActionController::Base.cache_store = :drb_store, "druby://localhost:9192"
    ActionController::Base.cache_store = :mem_cache_store, "localhost"
    ActionController::Base.cache_store = MyOwnStore.new("parameter") #重写自已的Store
    

    在environment可以添加语句 config.cache_store = xxx 进行设置

    网上很多文章因使用的rails版本已过时,仍以 fragment_cache_store= 作为教程存在,使人走了不少弯路。所以在rails升级或学习的过程中,阅读changelog是很有必要的。

    关于自定义Store网上教程似乎很少,但因其并不复杂,又因rails源码公开,大家可参考MemoryStore的源文件 memorystore_cache.rb
    如 class MyOwnStore < ActiveSupport::Cache::Store 并重写write,read等方法,则可以轻松制定Fragment的缓存方式。

    关于更多cache可以参考http://www.railsenvy.com/2007/2/28/rails-caching-tutorial 但注意该rails的版本也以过时,因为其log显示还是以Completed in 0.18700 (5 reqs/sec) | Rendering: 0.10900 (58%) | DB: 0.00000 (0%)形式。

分享到:
评论
4 楼 antter 2009-01-02  
上面的文章和你的机制是没啥关系。因为我对机制那些不太了解,也没啥发言权。只是站在普通用户,发表一下个人看法。哪个更稳定,哪个更快,支持负荷更高就用哪个。在测rack lighttpd的确要比nginx快,稳。

你的部署文章我已拜读过不下5遍,有log为证,因为我也发觉在fastcgi上lighttpd更有优势,理由可能和你不一样,你是机制怎样,缓冲区怎样等比较深度的比较。而我只是普通用户压力测试的结果。即然都觉得lighttpd好,我也就不去测别的比较到底好多少了。如果发现nginx和lighttpd目前表现还是一样,那我肯定要对你说的缓冲区大小对性的影响,或者进行更苛刻的条件之类进行测试。
3 楼 robbin 2009-01-01  
antter 写道
lighttpd的确比nginx好。
我在测式rack时,500并发,nginx会发生 Broken Pipe错误,不得其解,而lighttpd不会。
但lighttpd在log中会出现一些 "sockets disabled, out-of-fds"
我想Broken Pipe大概源于out of fds.
如此看来,lighttpd在fastcgi方面的确要比nginx更胜一筹


那时因为操作系统默认设置的文件描述符不够用了,你需要设置更大的文件描述符数量,这个可以通过lighttpd的配置文件设置,nginx也应该有类似的设置,这和性能无关。

事实上单纯看静态文件的处理速度、并发支持数量和资源消耗的节省度上来说,nginx要明显好于lighttpd,但在FastCGI支持上,nginx作为一个通用的http proxy,不可能像lighttpd那样专门为FastCGI去实现一些东西。当然你显然没有看过我写的文章。
2 楼 antter 2008-12-31  
lighttpd的确比nginx好。
我在测式rack时,500并发,nginx会发生 Broken Pipe错误,不得其解,而lighttpd不会。
但lighttpd在log中会出现一些 "sockets disabled, out-of-fds"
我想Broken Pipe大概源于out of fds.
如此看来,lighttpd在fastcgi方面的确要比nginx更胜一筹
1 楼 robbin 2008-12-31  
FastCGI如果是Rails的话,不推荐搭配nginx,一定要用lighttpd,原因我以前详细解释过了。当然如果你的应用很小,一般也不会碰到问题,用nginx也行。

相关推荐

    Ruby-性能测试(完整版)

    Ruby性能测试是软件开发过程中一个至关重要的环节,尤其是在使用Ruby这种动态编程语言时。它确保了代码在实际生产环境中的高效运行,避免了资源浪费和潜在的性能瓶颈。本资料包详细介绍了Ruby性能测试的各个方面,...

    如何用Ruby来实现页面性能测试

    标题中的“如何用Ruby来实现页面性能测试”指的是利用Ruby编程语言进行网页性能评估和监控的一种方法。在描述中提到,作者选择了Ruby而非QTP(QuickTest Professional)是因为Ruby具有优于QTP的独特优点,尤其在资源...

    ruby开发的基本流程.doc

    ### Ruby开发的基本流程 #### 一、Ruby开发环境搭建 Ruby是一种动态的、面向对象的解释型编程语言,因其简洁易读的语法和强大的库支持而在Web开发领域中备受青睐。开发Ruby应用的第一步是搭建合适的开发环境。推荐...

    ruby测试代码1

    "ruby测试代码1"可能指的是一个具体的测试用例或者测试框架的实例,用于验证Ruby程序的功能和性能。Ruby提供了多种测试工具,如MiniTest、RSpec和Cucumber等,它们各自有其特点和适用场景。 MiniTest是Ruby标准库的...

    Ruby开发环境的配置

    Ruby 开发环境的配置 Ruby 是一种流行的编程语言, Rails 是基于 Ruby 的一个 Web 应用框架。本文档将指导您如何配置 Ruby 开发环境,包括安装 Ruby 和 Rails、配置开发环境、安装数据库等步骤。 一、安装 Ruby ...

    ruby on rose开发文档-开发

    在阅读提供的rdoc文件时,你可以找到关于Rails框架中各个组件的详细文档,包括类和函数方法的说明,这对于深入理解和使用Ruby on Rails进行开发非常有帮助。通过学习这些文档,开发者能更好地掌握Rails的精髓,提高...

    ruby开发文档

    本开发文档将深入探讨Ruby的核心概念、语法特性、类与对象、方法、模块和混合、数组、哈希、控制结构、异常处理、文件与目录操作、Gem包管理、测试框架等内容,帮助开发者全面理解和掌握Ruby编程。 1. **核心概念**...

    ruby on rails社区网站开发源码

    在“ruby on rails社区网站开发源码”中,我们可以学习到如何利用Rails构建一个互动性强、功能丰富的社区网站。以下是一些关键知识点: 1. **安装与环境设置**:首先,你需要安装Ruby和Rails。这通常涉及设置Ruby...

    提升Ruby on Rails性能的几个解决方案

    Ruby On Rails 框架自它提出之日起就受到广泛关注,在“不要重复自己”,“约定优于配置”等思想的指导下,Rails 带给 Web 开发者的是极高的开发效率。 ActiveRecord 的灵活让你再也不用配置繁琐的 Hibernate 即可...

    ruby测试代码6

    标题“ruby测试代码6”和描述“ruby测试代码6”暗示了这是一个关于使用Ruby语言进行的测试代码项目,可能涉及到不同的模块或者数据结构。标签“ruby测试代码6”进一步确认了这一主题。从压缩包子文件的文件名称列表...

    Ruby-SkylightRails应用程序的智能分析工具能够可视化请求性能

    Ruby-Skylight 是一款专为Rails应用设计的性能分析工具,它可以帮助开发者深入理解应用程序的运行状况,尤其是在处理请求时的性能表现。...对于任何希望提升Rails应用性能的开发者而言,这都是一个不可或缺的工具。

    ruby测试代码7

    Ruby是一种强大的动态编程语言,广泛应用于Web开发、脚本编写以及软件测试等领域。"Ruby测试代码7"可能指的是一个特定的测试用例或测试框架在Ruby中的应用。在这个场景下,我们将深入探讨Ruby中的测试实践,包括测试...

    如何能让Ruby性能增加30%

    总结来说,通过`--disable-pthread`编译Ruby可以减少线程管理和信号处理相关的系统调用,特别是`sigprocmask`,从而提高约30%的性能。然而,这并不意味着在所有情况下都应该禁用线程支持。线程在多任务和并发处理中...

    ruby on rails 开发环境包(ruby1.8.7,rails2.2.3)

    在这个开发环境包中,我们拥有Ruby 1.8.7版本和Rails 2.2.3版本,这两个组件构成了一个经典的开发组合。 Ruby 1.8.7是Ruby编程语言的一个早期稳定版本,发布于2010年,提供了许多改进和新特性。在Ruby 1.8.x系列中...

    Ruby-Falcon用于Ruby的高性能web服务器支持HTTP2和HTTPS

    Ruby-Falcon是一个专门为Ruby语言设计的高性能Web服务器,它的出现为开发者提供了在处理高并发、低延迟场景下的优秀选择。Falcon的主要特点是其对HTTP/2协议和HTTPS的支持,这使得它在现代Web服务中具备了高效且安全...

    Windows下RDT+Eclipse搭建 ruby开发环境配置

    在Windows环境下,搭建Ruby开发环境是一项基础而重要的工作,它涉及到多个步骤,包括安装必要的软件、配置环境变量以及集成开发工具的设置。本教程将详细讲解如何使用RDT(Ruby Development Tools)与Eclipse来创建...

    Ruby及开发工具(一个script的程序语言)

    这使得在Ruby中进行面向对象编程非常自然。 2. 动态类型:Ruby具有动态类型系统,变量的类型在运行时自动确定,无需提前声明。 3. 自动内存管理:Ruby使用垃圾回收机制来自动管理内存,开发者无需手动释放内存。 4. ...

Global site tag (gtag.js) - Google Analytics