`
robbin
  • 浏览: 4825885 次
  • 性别: Icon_minigender_1
  • 来自: 上海
博客专栏
377a9ecd-1ea1-34ac-9530-9daa53bb2a7b
robbin谈管理
浏览量:137460
社区版块
存档分类
最新评论

通过JavaEye2.0网站看ruby on rails性能

    博客分类:
  • Ruby
阅读更多
ruby on rails作为web开发框架,通常被认为性能很差,并因此被置疑其前景。JavaEye2.0网站使用ruby on rails开发,已经上线运行一个月了,通过这一个月的运行,我们可以对ruby on rails的性能有一个初步的认识。

JavaEye2.0运行的服务器硬件配置:
引用
HP DL145 G1,两路AMD Operton 2GHz CPU, 4G DDR RAM, 73G SCSI 15k Disk

这是一个标准的低端1U机架式服务器,大概能够以15k价格购买到,可以说是相当便宜的硬件配置了。

JavaEye2.0的软件运行环境:
引用
Linux Kernel-2.6.7,lighttpd-1.4.13,MySQL-5.0,ruby-1.8.4(GC patch)

此外服务器上面还运行了Email Server,Tomcat等服务

在JavaEye2.0刚刚上线的时候,启动了50个FastCGI ruby进程,发现大量空闲FastCGI进程,随后根据运行情况,不断减少进程数量,目前只启动了20个FastCGI进程,因此负载量还是很轻的。

服务器的平均CPU使用率在繁忙的时候,大概15%左右,MySQL数据库繁忙的时候平均每秒发送超过100条SQL语句,24小时平均每秒发送45条SQL语句。硬盘IO非常少,每秒读硬盘非常低,每秒写硬盘平均200KB左右(操作系统进行了充分的disk cache,MySQL Cache使用率也几乎满了)。

通过上面这些服务器运行情况,可以大致得出一个结论,目前JavaEye2.0网站在这种低端硬件上面的负载量非常轻,对硬件消耗不大。

目前JavaEye2.0网站使用了Google Analytics来统计网站的访问量。根据这一个月的统计量,周一到周五一般每天动态网页PageView超过5万,周六周日和国庆期间每天动态网页PageView超过2万。但是根据对rails的production.log进行统计,24小时,rails正常处理的、状态为200 OK的Action动态请求数量有12万多。也就是说网站每天正常处理动态请求超过了12万。

由于网站的访问量大部分集中在早上9.00到晚上9.00这12个小时的范围内。因此可以大致粗略的认为12小时处理12万动态请求,平均每小时处理1万动态请求,也就是说平均每秒处理3个动态请求。

观察production..0X秒,少量请求是0.X秒,如果我们按照平均每个请求处理时间为0.1秒计算,那么一个FastCGI进程每秒可以处理10个请求,从目前JavaEye2.0网站的运行状况来看,支撑每天60万动态请求,看来是毫无问题的。所有的这些还是没有对程序进行必要的Cache优化所取得的,如果对程序进行充分的优化,达到每天支撑100万动态请求也是可以做到的。

如果一个网站能够到达每天50万动态请求,已经是一个相当大的网站了,对于那些企业应用来说,访问量也往往达不到这么大的流量,因此从JavaEye2.0网站的运行情况来看,ruby on rails在性能方面并不会成为一个问题。



分享到:
评论
35 楼 dearsuper 2007-09-04  
robbin,实践者。是那些真正的实践者,在影响世界。
34 楼 strongkill 2007-09-04  
小弟的网站也是用lighttpd+ruby做的.http://www.strongd.net
感觉比PHP+APACHE好很多.
33 楼 jimxl 2007-09-01  
kris_xu 写道
当今硬件应该不是效率的瓶颈了吧。这么精确的计算能够说服企业用ruby?
现在有支持ruby的空间么?


现在这样的空间太多了.
32 楼 gigix 2007-09-01  
kris_xu 写道
当今硬件应该不是效率的瓶颈了吧。这么精确的计算能够说服企业用ruby?
现在有支持ruby的空间么?

企业应用不会用共享空间的
31 楼 uu4u 2007-09-01  
呵呵,今天才看到,有点相见恨晚的感觉,其实,从年初就开始学习RoR,但是,一直仅限于Demo似的的开发学习,没有真正的做过项目,而且是三天打鱼,两天晒网的。看来,还要好好学习学习的。
30 楼 read 2007-05-31  
关注!
29 楼 jinweijie 2007-05-22  
cool site!

因为这个使用ror写的,所以我把blog搬过来了!
28 楼 深蓝_ 2007-05-21  
Ruby On Rails和 Grails 性能相比呢??
27 楼 kris_xu 2007-05-17  
当今硬件应该不是效率的瓶颈了吧。这么精确的计算能够说服企业用ruby?
现在有支持ruby的空间么?
26 楼 bruce.lu 2007-05-17  
studying
25 楼 bruce.lu 2007-05-17  
good article, thanks, hoping 4 more ones like this...
24 楼 basicbest 2007-02-09  
从实际情况来看,性能还是很不错的。

Robbin有没有兴趣实际做一下压力测试?

我很想知道,每秒10 20 50 100个并发请求下的实际表现。
23 楼 nwangwei 2007-02-08  
robbin 写道


JavaEye2.0的软件运行环境:
引用
Linux Kernel-2.6.7,lighttpd-1.4.13,MySQL-5.0,ruby-1.8.4(GC patch)

......

服务器的平均CPU使用率在繁忙的时候,大概15%左右,MySQL数据库繁忙的时候平均每秒发送超过100条SQL语句,24小时平均每秒发送45条SQL语句。硬盘IO非常少,每秒读硬盘非常低,每秒写硬盘平均200KB左右(操作系统进行了充分的disk cache,MySQL Cache使用率也几乎满了)。



我比较关心数据库,问一下您使用的是 MySQL 的什么数据库格式呢,最大的表格有多少的数据量呢?
一般 SQL 语句中select、insert和update的比率大概是多少呢?



感觉 Web 应用确实在数据库上花费时间很多哎~
22 楼 thegiive 2007-02-06  
Physon 写道
比 PHP 不是慢一点哦. 不过也是, 能满足需求就好, 而且还有很多非语言级别的措施. 但是, 别忽略了, 如果 PHP 或是 Java 也来一个轻量级的框架呢? 因此, 要想挤进企业级应用, Ruby 本身任重而道远.


PHP 的確比 Ruby 快,不過 PHP 的框架跟 Ruby 的框架校能比呢?
這個 benchmark 剛好做出相反地結果
http://lightyror.thegiive.net/2007/01/rubypythonperlphp.html

語言的快慢是一回事,用效能比較快的語言並不代表這個語言的框架會比較快
還是一句話「當語言的效能差距不大時,框架設計者他們的實做的功力分高下」
21 楼 robbin 2007-02-03  
Physon 写道
比 PHP 不是慢一点哦. 不过也是, 能满足需求就好, 而且还有很多非语言级别的措施. 但是, 别忽略了, 如果 PHP 或是 Java 也来一个轻量级的框架呢? 因此, 要想挤进企业级应用, Ruby 本身任重而道远.


和PHP是两码事。Java还比C慢不是一点呢。
20 楼 Physon 2007-01-31  
比 PHP 不是慢一点哦. 不过也是, 能满足需求就好, 而且还有很多非语言级别的措施. 但是, 别忽略了, 如果 PHP 或是 Java 也来一个轻量级的框架呢? 因此, 要想挤进企业级应用, Ruby 本身任重而道远.
19 楼 robbin 2007-01-29  
gKarerM 写道
请教robbin一个问题,每秒钟发送的SQL数量和磁盘IO怎么查看?这方面我完全文盲


mytop, iostat
18 楼 gKarerM 2007-01-29  
请教robbin一个问题,每秒钟发送的SQL数量和磁盘IO怎么查看?这方面我完全文盲
17 楼 strongkill 2007-01-16  
不能只看单单数据来定出某种语言/框架的性能.要长时间,大家一齐用实践来证明的.
16 楼 robbin 2006-10-14  
Lucas Lee 写道
而且我想问问robbin,是不是你们的论坛没有对帖子等数据作缓存?每次访问都是到数据库里查一次?Jive论坛程序据说有大量的缓存,所以性能会很高,不知道以前这里用的PHPBB是不是也没有缓存帖子。

如果没有缓存,有这样的性能,倒还是不错的。搞缓存还是比较麻烦,能用硬件对付过去,还是节省点开发成本的好。


还没有使用任何缓存,每次动态请求都是访问数据库。

相关推荐

    JavaEye2.0_on_rails

    ### JavaEye2.0_on_rails:敏捷Web开发实践与Ruby on Rails的应用 #### 敏捷软件开发方法 - **背景**:传统软件工程方法在实际应用中面临着项目延期、成本超支以及软件质量不高的问题。为了克服这些挑战,业界提出...

    Ruby on Rails

    在Linux平台上安装和配置Ruby on Rails详解 - rails - Ruby - JavaEye论坛.htm

    javaeye月刊2008年6月 总第4期.pdf

    - Ruby on Rails应对大规模流量的能力,显示了其在处理高并发场景下的效能。 - Ruby & Rails的月度和周度总结,提供了关于社区发展、新技术和最佳实践的最新动态。 这份月刊不仅反映了当时Java和Ruby生态系统的...

    JavaEye新闻月刊_-_2009年3月_-_总第13期

    同期,Ruby on Rails 2.3最终版发布,该版本引入了Rack中间件的使用和支持新Engine的增强等关键特性,增强了Ruby on Rails的可扩展性和性能。 在开源技术领域,Linux有潜力成为Java的操作系统(OS),以及Google ...

    javaeye热点阅读

    19. Ruby on Rails:Ruby on Rails是一个流行的Web开发框架,文中探讨了其在企业开发、嵌入式开发中的应用,以及工作流实现。 20. AJAX技术:包括ExtJS基础教程和jQuery图片循环效果,展示了AJAX如何提升用户体验。...

    JavaEye3.0开发手记

    NetBeans Ruby IDE 是一个强大的集成开发环境,专门为Ruby on Rails (RoR) 开发而设计。它提供了丰富的功能和快捷键,极大地提高了开发效率。 **2. 下载与安装** - **下载地址**:...

    RoR性能优化经验谈

    RoR(Ruby on Rails)是一种流行的开源Web开发框架,以其高效和简洁的代码著称。然而,随着网站规模的增长,性能优化成为必不可少的环节。在本文中,我们将探讨一些RoR性能优化的关键方面,主要基于JavaEye网站在...

    javaeye被黑

    javaeye被黑 大家看看

    Chart 极品web报表控件收集(Flot,AmCharts, Emprise JavaScript Charts...)

    • Visifire - Visifire 是用 Silverlight 做的,是一个开源可视化数据组件,使用Visifire你能创建动画 Silverlight 图表,支持 ASP, ASP.Net, PHP, JSP, ColdFusion, Ruby on Rails 或者 简单 HTML调用. ...

    Rails缓存架构设计

    以JavaEye网站为例,该网站每天处理超过300万次的Rails动态请求以及1500万次的HTTP请求,在高峰时段每秒处理600多次HTTP请求。为了应对如此巨大的流量,其采用了以下策略: - 使用lighttpd作为Web服务器,fastcgi ...

    JavaEye博文JavaEye博文JavaEye博文

    "JavaEye博文" 本资源摘要信息来自JavaEye博文,作者cutesunshineriver,发布于2010年。该博文涵盖了软件开发、编程、项目管理等多方面的知识点。 在本博文中,我们可以看到多个与软件开发相关的知识点,包括: 1...

    使用rails编写REST风格的web应用.pdf

    标题与描述均指向了"使用Rails编写REST风格的Web应用"这一主题,这是一份深入探讨如何运用Ruby on Rails框架来构建遵循REST(Representational State Transfer)架构风格的Web应用程序的指南。REST作为一种架构风格...

    JavaEye论坛热点月报 总第5期

    1. **Javarebel**:Javarebel是一款强大的工具,它使得JavaEE开发变得更加高效,类似于Ruby on Rails(ROR)的开发体验。通过实时应用代码更改,开发者无需重新部署应用就能看到更新的效果,大大提高了开发效率。 2. ...

    JavaEye论坛热点_-_2008年11月_-_总第6期

    - IronRuby是.NET框架下的Ruby实现,允许开发者利用.NET平台的动态语言运行时(DLR)构建类似Rails的MVC架构应用,但不依赖Rails框架。这为.NET开发者提供了更多灵活性和选择。 4. **开源与技术分享** - 论坛中...

    ruby watir教程

    - **下载Ruby安装包**:首先下载 `ruby186-26.exe`,可以从提供的链接或官方RubyForge网站获取。 - **安装Ruby**:运行下载好的安装程序并完成安装过程。 - **更新Gem**:通过命令行执行 `gem update --system` 来...

    JSP复习笔记——第10章 连接数据库 之 JDBC相关 - 堕落天使 - JavaEye技术网站.mht

    JSP复习笔记——第10章 连接数据库 之 JDBC相关 - 堕落天使 - JavaEye技术网站.mhtJSP复习笔记——第10章 连接数据库 之 JDBC相关 - 堕落天使 - JavaEye技术网站.mht

Global site tag (gtag.js) - Google Analytics