- 浏览: 4825919 次
- 性别:
- 来自: 上海
博客专栏
-
robbin谈管理
浏览量:137462
文章分类
最新评论
-
xly1981:
领导者是团队的灵魂。深入一线的过程,包括代码review,能帮 ...
robbin谈管理:改造团队的经验(2) -
jiehuangwei:
像这种总结比较性的ppt文档可以多发啊
Web并发模型粗浅探讨 -
linux1308:
看完学习到了很多东西,感谢推荐!
推荐一篇很好的RoR部署方案性能评测 -
zweite:
直接对搜索的结果进行缓存是不是会更快一点呢
漫谈应用缓存的命中率问题 -
kaogua:
现在已经是ruby2.0了, 不知道这个的效率是怎么样的, 是 ...
Ruby作为服务器端应用已经成熟了
ruby on rails作为web开发框架,通常被认为性能很差,并因此被置疑其前景。JavaEye2.0网站使用ruby on rails开发,已经上线运行一个月了,通过这一个月的运行,我们可以对ruby on rails的性能有一个初步的认识。
JavaEye2.0运行的服务器硬件配置:
这是一个标准的低端1U机架式服务器,大概能够以15k价格购买到,可以说是相当便宜的硬件配置了。
JavaEye2.0的软件运行环境:
此外服务器上面还运行了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在性能方面并不会成为一个问题。
单纯比较JVM,PHP解析器,ruby解析器的话,肯定是JVM最快,ruby解析器最慢,这个结论是很明确的事情了。
但是对于一个具体环境部署的web应用来说,这个web应用体现出来的吞吐量,负载能力,是取决于很多因素的,解析器的性能只是其中一个因素而已。而且通过一系列实践来看,ruby解析器的低性能对于整体web应用性能的影响并不明显。
因此ruby解析器虽然性能差,但是ruby on rails开发的web应用性能却并没有表现得差,甚至还挺不错的,这个就是我想说明的。
至于非要和PHP和Java比较,其实意义不大,因为影响web应用因素很多的,往往最终性能的瓶颈都是数据库。
懂你的意思了。
我有个想法,有点远了,如果你能给出这个论坛的性能参数在数据库处理和Ruby处理之间的比率,我想更有意义,可以借鉴到其他数据库类的程序。我不是很懂性能参数,这个参数似乎应该是cpu占用率与时间的乘积,一个微积分的面积问题,然后把数据库的这个值和Ruby处理的值作一个比率。不知道是不是有现成工具可以测得出。
如果你的想法被证明成立,即web的数据库应用一般来说性能瓶颈都是数据库的话,那就有意义了。
我自己买服务器是因为原来的服务器运行环境太不稳定了。
我没有做过实际案例的对比测试,不清楚同样一个web应用,究竟哪个稍微快点。不过我根本就不关心这一点,谁快点慢点根本就无关紧要。
但其实这一点还是有相当的感性认识作用的。比如有些人比较了解PHP或ASP或JSP论坛的负载能力,给出一个大概的比较,还是很有说服力的。光说一些指标会显得空泛了。
比如说Oracle新版本,什么配置能达到多少TPS,对于很多人来说,那只是一个数字,很可能没有任何感觉;如果给出新版本对旧版本的大概百分比,会有效得多,当然只是一个概述,细节可能有很多变化。
单纯比较JVM,PHP解析器,ruby解析器的话,肯定是JVM最快,ruby解析器最慢,这个结论是很明确的事情了。
但是对于一个具体环境部署的web应用来说,这个web应用体现出来的吞吐量,负载能力,是取决于很多因素的,解析器的性能只是其中一个因素而已。而且通过一系列实践来看,ruby解析器的低性能对于整体web应用性能的影响并不明显。
因此ruby解析器虽然性能差,但是ruby on rails开发的web应用性能却并没有表现得差,甚至还挺不错的,这个就是我想说明的。
至于非要和PHP和Java比较,其实意义不大,因为影响web应用因素很多的,往往最终性能的瓶颈都是数据库。
我自己买服务器是因为原来的服务器运行环境太不稳定了。
我没有做过实际案例的对比测试,不清楚同样一个web应用,究竟哪个稍微快点。不过我根本就不关心这一点,谁快点慢点根本就无关紧要。
但其实这一点还是有相当的感性认识作用的。比如有些人比较了解PHP或ASP或JSP论坛的负载能力,给出一个大概的比较,还是很有说服力的。光说一些指标会显得空泛了。
比如说Oracle新版本,什么配置能达到多少TPS,对于很多人来说,那只是一个数字,很可能没有任何感觉;如果给出新版本对旧版本的大概百分比,会有效得多,当然只是一个概述,细节可能有很多变化。
这一点让我想起毕业论文答辩:我做的一个利用废料作原料的建筑玻璃工艺,导师就让我说什么什么情况下,一年能给工厂节约多少个百万,说领导就爱听这个;我当时自己就觉得有疑问,没有基数,这个百万似乎没有意义,自己算了个百分比;结果答辩时就用上了,有意思。
我自己买服务器是因为原来的服务器运行环境太不稳定了。
我没有做过实际案例的对比测试,不清楚同样一个web应用,究竟哪个稍微快点。不过我根本就不关心这一点,谁快点慢点根本就无关紧要。
随便弄个错误信息就知道了。比如访问http://xx.iteye.com/
观察production.log,大部分动态请求处理时间都是0.0X秒,少量请求是0.X秒,如果我们按照平均每个请求处理时间为0.1秒计算,那么一个FastCGI进程每秒可以处理10个请求,总共20个FastCGI进程每秒处理200个请求,即每小时处理72万请求,每天至少可以处理700万动态请求,折算实际访问量,也应该至少有200万PageView了。
这个不能这样简单地计算吧,除非你有20个CPU,每进程只有1线程,那还得保证磁盘和其它资源没有成为瓶颈。每秒200个动态请求还是挺吓人的。
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在性能方面并不会成为一个问题。
评论
15 楼
LucasLee
2006-10-13
而且我想问问robbin,是不是你们的论坛没有对帖子等数据作缓存?每次访问都是到数据库里查一次?Jive论坛程序据说有大量的缓存,所以性能会很高,不知道以前这里用的PHPBB是不是也没有缓存帖子。
如果没有缓存,有这样的性能,倒还是不错的。搞缓存还是比较麻烦,能用硬件对付过去,还是节省点开发成本的好。
如果没有缓存,有这样的性能,倒还是不错的。搞缓存还是比较麻烦,能用硬件对付过去,还是节省点开发成本的好。
14 楼
LucasLee
2006-10-13
robbin 写道
单纯比较JVM,PHP解析器,ruby解析器的话,肯定是JVM最快,ruby解析器最慢,这个结论是很明确的事情了。
但是对于一个具体环境部署的web应用来说,这个web应用体现出来的吞吐量,负载能力,是取决于很多因素的,解析器的性能只是其中一个因素而已。而且通过一系列实践来看,ruby解析器的低性能对于整体web应用性能的影响并不明显。
因此ruby解析器虽然性能差,但是ruby on rails开发的web应用性能却并没有表现得差,甚至还挺不错的,这个就是我想说明的。
至于非要和PHP和Java比较,其实意义不大,因为影响web应用因素很多的,往往最终性能的瓶颈都是数据库。
懂你的意思了。
我有个想法,有点远了,如果你能给出这个论坛的性能参数在数据库处理和Ruby处理之间的比率,我想更有意义,可以借鉴到其他数据库类的程序。我不是很懂性能参数,这个参数似乎应该是cpu占用率与时间的乘积,一个微积分的面积问题,然后把数据库的这个值和Ruby处理的值作一个比率。不知道是不是有现成工具可以测得出。
如果你的想法被证明成立,即web的数据库应用一般来说性能瓶颈都是数据库的话,那就有意义了。
13 楼
robbin
2006-10-13
Lucas Lee 写道
robbin 写道
Lucas Lee 写道
听上去的确还不错。不过我想问robbin的是,同样的网站,ROR做的还是会比PHP的慢吧?否则你也不用自己买服务器了?
我自己买服务器是因为原来的服务器运行环境太不稳定了。
我没有做过实际案例的对比测试,不清楚同样一个web应用,究竟哪个稍微快点。不过我根本就不关心这一点,谁快点慢点根本就无关紧要。
但其实这一点还是有相当的感性认识作用的。比如有些人比较了解PHP或ASP或JSP论坛的负载能力,给出一个大概的比较,还是很有说服力的。光说一些指标会显得空泛了。
比如说Oracle新版本,什么配置能达到多少TPS,对于很多人来说,那只是一个数字,很可能没有任何感觉;如果给出新版本对旧版本的大概百分比,会有效得多,当然只是一个概述,细节可能有很多变化。
单纯比较JVM,PHP解析器,ruby解析器的话,肯定是JVM最快,ruby解析器最慢,这个结论是很明确的事情了。
但是对于一个具体环境部署的web应用来说,这个web应用体现出来的吞吐量,负载能力,是取决于很多因素的,解析器的性能只是其中一个因素而已。而且通过一系列实践来看,ruby解析器的低性能对于整体web应用性能的影响并不明显。
因此ruby解析器虽然性能差,但是ruby on rails开发的web应用性能却并没有表现得差,甚至还挺不错的,这个就是我想说明的。
至于非要和PHP和Java比较,其实意义不大,因为影响web应用因素很多的,往往最终性能的瓶颈都是数据库。
12 楼
LucasLee
2006-10-13
robbin 写道
Lucas Lee 写道
听上去的确还不错。不过我想问robbin的是,同样的网站,ROR做的还是会比PHP的慢吧?否则你也不用自己买服务器了?
我自己买服务器是因为原来的服务器运行环境太不稳定了。
我没有做过实际案例的对比测试,不清楚同样一个web应用,究竟哪个稍微快点。不过我根本就不关心这一点,谁快点慢点根本就无关紧要。
但其实这一点还是有相当的感性认识作用的。比如有些人比较了解PHP或ASP或JSP论坛的负载能力,给出一个大概的比较,还是很有说服力的。光说一些指标会显得空泛了。
比如说Oracle新版本,什么配置能达到多少TPS,对于很多人来说,那只是一个数字,很可能没有任何感觉;如果给出新版本对旧版本的大概百分比,会有效得多,当然只是一个概述,细节可能有很多变化。
这一点让我想起毕业论文答辩:我做的一个利用废料作原料的建筑玻璃工艺,导师就让我说什么什么情况下,一年能给工厂节约多少个百万,说领导就爱听这个;我当时自己就觉得有疑问,没有基数,这个百万似乎没有意义,自己算了个百分比;结果答辩时就用上了,有意思。
11 楼
zwhua
2006-10-13
不错,好久没有来了,呵呵!
10 楼
raymond
2006-10-13
很好,对于我继续学习Ruby有很积极的广告效应。
9 楼
robbin
2006-10-12
Lucas Lee 写道
听上去的确还不错。不过我想问robbin的是,同样的网站,ROR做的还是会比PHP的慢吧?否则你也不用自己买服务器了?
我自己买服务器是因为原来的服务器运行环境太不稳定了。
我没有做过实际案例的对比测试,不清楚同样一个web应用,究竟哪个稍微快点。不过我根本就不关心这一点,谁快点慢点根本就无关紧要。
8 楼
LucasLee
2006-10-12
听上去的确还不错。不过我想问robbin的是,同样的网站,ROR做的还是会比PHP的慢吧?否则你也不用自己买服务器了?
7 楼
hijack
2006-10-11
Uranus 写道
不错不错,没想到这个论坛是用ROR做的,不错,有时间研究下RUBY,不知道论坛代码能不能共享下,赫赫!
随便弄个错误信息就知道了。比如访问http://xx.iteye.com/
6 楼
Uranus
2006-10-11
不错不错,没想到这个论坛是用ROR做的,不错,有时间研究下RUBY,不知道论坛代码能不能共享下,赫赫!
5 楼
kryptonum
2006-10-11
从Robbin提供的数据来看,在目前的吞吐量下,RoR的性能相当不错
现在的问题就是当访问量大增的时候性能的曲线是什么样的
现在的问题就是当访问量大增的时候性能的曲线是什么样的
4 楼
thundercao
2006-10-10
实践出真知
3 楼
cookoo
2006-10-10
哈哈,记得以前robbin问我:如果一个请求处理要1秒,每个fastcgi进程有10个请求排队,那每个请求要等10秒了? 答:对阿。。。
2 楼
robbin
2006-10-09
200个应该达不到。不过从目前硬件资源占用率来看,每秒达到30个以上是没有什么问题的。
1 楼
qiezi
2006-10-09
robbin 写道
观察production.log,大部分动态请求处理时间都是0.0X秒,少量请求是0.X秒,如果我们按照平均每个请求处理时间为0.1秒计算,那么一个FastCGI进程每秒可以处理10个请求,总共20个FastCGI进程每秒处理200个请求,即每小时处理72万请求,每天至少可以处理700万动态请求,折算实际访问量,也应该至少有200万PageView了。
这个不能这样简单地计算吧,除非你有20个CPU,每进程只有1线程,那还得保证磁盘和其它资源没有成为瓶颈。每秒200个动态请求还是挺吓人的。
发表评论
-
《松本行弘的程序世界》推荐序
2011-07-21 13:47 15304在流行的编程语言中,ruby是一个比较另类的存在,这是因为大多 ... -
从Rails聊聊小公司的研发团队建设
2011-03-23 10:49 37233首先分享一点数据吧: JavaEye的PV到了140万了,一 ... -
Ruby作为服务器端应用已经成熟了
2009-11-17 14:55 15975JavaEye网站在过去的Ruby on rails实践当中, ... -
基于资源的HTTP Cache的实现介绍
2009-09-05 00:27 17075我们都知道浏览器会缓 ... -
请注意Rails2.3自带的memcache-client有性能问题
2009-03-23 18:05 14511Rails2.3版本发布了,这个版本内部的改动非常大,相关介绍 ... -
监视Rails进程内存泄漏的技巧
2008-12-30 21:56 10972Rails应用比较容易遇到的两类性能问题:一类是Rails执行 ... -
ruby MBARI大补丁性能评测报告
2008-12-23 12:19 5075JavaEye之前的新闻ruby内存泄漏的罪魁祸首 - 幽灵指 ... -
在top监视窗口显示Rails当前正在执行的请求URL
2008-12-01 14:15 9863这是一个从PragDave的博客上面学来的技巧,很实用,很co ... -
对Ruby VM的GC的思考
2008-09-02 23:41 8987Ruby虽然是动态脚本语言 ... -
推荐一篇很好的RoR部署方案性能评测
2008-07-08 11:55 9679今年年初的时候,我写了一篇RoR部署方案深度剖析的文章,分析了 ... -
Ruby和Rails的缺点
2008-06-25 21:08 17409有人说,robbin你说了那么多RoR的优点,你啥时候说说Ro ... -
Skynet --- ruby的类Google Map/Reduce框架
2008-06-02 00:39 8303Skynet是一个很响亮的名 ... -
rmmseg-cpp - 简洁高效的ruby中文分词程序
2008-05-27 00:47 11243我在前一篇文章向大家 ... -
使用libmmseg实现Ruby的中文分词功能
2008-05-24 21:43 11337用Ruby on Rails开发web2.0网站的人都知道,r ... -
mod_rails尝鲜
2008-04-13 14:32 8086Passenger(俗称mod_rails)是 ... -
Lighttpd和RoR安装配置的疑难解答
2008-03-07 11:09 14866之前写过一篇在Linux平 ... -
JavaEye网站的RoR性能优化经验谈
2008-01-20 16:11 18467JavaEye网站从2006年9月11 ... -
RoR部署方案深度剖析
2008-01-14 03:10 14809RoR的部署方案可谓五花八门,有Apache/Fastcgi方 ... -
RoR网站如何利用lighttpd的X-sendfile功能提升文件下载性能
2008-01-12 17:45 10268传统的Web服务器在处理文件下载的时候,总是先读入文件内容到应 ... -
Ruby为什么会受程序员的欢迎?
2008-01-07 20:08 15755孟岩最近写了一篇博客 ...
相关推荐
### JavaEye2.0_on_rails:敏捷Web开发实践与Ruby on Rails的应用 #### 敏捷软件开发方法 - **背景**:传统软件工程方法在实际应用中面临着项目延期、成本超支以及软件质量不高的问题。为了克服这些挑战,业界提出...
在Linux平台上安装和配置Ruby on Rails详解 - rails - Ruby - JavaEye论坛.htm
- Ruby on Rails应对大规模流量的能力,显示了其在处理高并发场景下的效能。 - Ruby & Rails的月度和周度总结,提供了关于社区发展、新技术和最佳实践的最新动态。 这份月刊不仅反映了当时Java和Ruby生态系统的...
同期,Ruby on Rails 2.3最终版发布,该版本引入了Rack中间件的使用和支持新Engine的增强等关键特性,增强了Ruby on Rails的可扩展性和性能。 在开源技术领域,Linux有潜力成为Java的操作系统(OS),以及Google ...
19. Ruby on Rails:Ruby on Rails是一个流行的Web开发框架,文中探讨了其在企业开发、嵌入式开发中的应用,以及工作流实现。 20. AJAX技术:包括ExtJS基础教程和jQuery图片循环效果,展示了AJAX如何提升用户体验。...
NetBeans Ruby IDE 是一个强大的集成开发环境,专门为Ruby on Rails (RoR) 开发而设计。它提供了丰富的功能和快捷键,极大地提高了开发效率。 **2. 下载与安装** - **下载地址**:...
RoR(Ruby on Rails)是一种流行的开源Web开发框架,以其高效和简洁的代码著称。然而,随着网站规模的增长,性能优化成为必不可少的环节。在本文中,我们将探讨一些RoR性能优化的关键方面,主要基于JavaEye网站在...
javaeye被黑 大家看看
• Visifire - Visifire 是用 Silverlight 做的,是一个开源可视化数据组件,使用Visifire你能创建动画 Silverlight 图表,支持 ASP, ASP.Net, PHP, JSP, ColdFusion, Ruby on Rails 或者 简单 HTML调用. ...
以JavaEye网站为例,该网站每天处理超过300万次的Rails动态请求以及1500万次的HTTP请求,在高峰时段每秒处理600多次HTTP请求。为了应对如此巨大的流量,其采用了以下策略: - 使用lighttpd作为Web服务器,fastcgi ...
"JavaEye博文" 本资源摘要信息来自JavaEye博文,作者cutesunshineriver,发布于2010年。该博文涵盖了软件开发、编程、项目管理等多方面的知识点。 在本博文中,我们可以看到多个与软件开发相关的知识点,包括: 1...
标题与描述均指向了"使用Rails编写REST风格的Web应用"这一主题,这是一份深入探讨如何运用Ruby on Rails框架来构建遵循REST(Representational State Transfer)架构风格的Web应用程序的指南。REST作为一种架构风格...
1. **Javarebel**:Javarebel是一款强大的工具,它使得JavaEE开发变得更加高效,类似于Ruby on Rails(ROR)的开发体验。通过实时应用代码更改,开发者无需重新部署应用就能看到更新的效果,大大提高了开发效率。 2. ...
- IronRuby是.NET框架下的Ruby实现,允许开发者利用.NET平台的动态语言运行时(DLR)构建类似Rails的MVC架构应用,但不依赖Rails框架。这为.NET开发者提供了更多灵活性和选择。 4. **开源与技术分享** - 论坛中...
- **下载Ruby安装包**:首先下载 `ruby186-26.exe`,可以从提供的链接或官方RubyForge网站获取。 - **安装Ruby**:运行下载好的安装程序并完成安装过程。 - **更新Gem**:通过命令行执行 `gem update --system` 来...
JSP复习笔记——第10章 连接数据库 之 JDBC相关 - 堕落天使 - JavaEye技术网站.mhtJSP复习笔记——第10章 连接数据库 之 JDBC相关 - 堕落天使 - JavaEye技术网站.mht