robbin
- 浏览: 4793704 次
- 性别:
- 来自: 上海
博客专栏
-
robbin谈管理
浏览量:135363
社区版块
- ( 265)
- ( 6203)
- ( 75)
最新评论
-
xly1981:
领导者是团队的灵魂。深入一线的过程,包括代码review,能帮 ...
robbin谈管理:改造团队的经验(2) -
jiehuangwei:
像这种总结比较性的ppt文档可以多发啊
web并发模型粗浅探讨 -
linux1308:
看完学习到了很多东西,感谢推荐!
推荐一篇很好的ror部署方案性能评测 -
zweite:
直接对搜索的结果进行缓存是不是会更快一点呢
漫谈应用缓存的命中率问题 -
kaogua:
现在已经是ruby2.0了, 不知道这个的效率是怎么样的, 是 ...
ruby作为服务器端应用已经成熟了
文章列表
在流行的编程语言中,ruby是一个比较另类的存在,这是因为大多数编程语言的首要着眼点在于为解决特定的问题领域而设计语言,而ruby的首要着眼点在于"人性化",让程序员充分享受编程的乐趣。我因为组织国内的ruby会议的缘故,曾经两次邀请松本行弘来中国,他本人是一个性格平和,对生活充满热爱的人,在演讲中他也一再传递"code for fun"的宗旨:即编程语言不应该是冷冰冰的给机器阅读和执行的指令,而应该是让程序员编程的工作过程变成一种充满乐趣和享受的过程。而且松本先生发明ruby语言也是因为对他创造一种人性化的面向对象脚本语言的热爱。
程序员社区经常拿另外 ...
首先分享一点数据吧:
javaeye的pv到了140万了,一年前才100万出头,增长算不错的。仍然是单台web服务器,rails处理动态请求超过340万,除了真实用户访问,还有api,rss以及很多爬虫的请求。看je的alexa排名,cn排92名,全球790名,不过就2台服务器(1个web+1个db),2个程序员而已。
所以选择技术的时候,不能盯着top10的商业网站看,因为很少有创业团队最终能够走到top10,也不需要走到top10,即使现有的语言和架构无法满足需要了,更换技术架构的网站也很多:2000年我在上海出入idc机房的时候,旁边是易趣的服务器,都是用freebsd跑php,可是后 ...
- 2011-03-23 10:49
- 浏览 37047
- 分类:编程语言
javaeye网站在过去的ruby on rails实践当中,曾经被ruby的内存泄露问题深深的困扰过,并且自己编写了监控ruby进程泄露的监控脚本来解决这个问题。造成ruby内存管理不善的原因主要来自于两个方面:
一是ruby gc的实现本身存在很多问题,关于这一点,以前已经多次讨论,随着mbari内存补丁的发布,已经基本解决。特别是随着ruby enterprise edition集成mbari补丁,以及不断完善ruby实现,已经让ruby可以作为一个稳定的后台服务的实现了。
二是一些内存处理有问题的ruby本地扩展库造成的内存泄露,这种情况就必须尽量避免使用第三方库,即使要用,也要保证 ...
我们都知道浏览器会缓存访问过网站的网页,浏览器通过url地址访问一个网页,显示网页内容的同时会在电脑上面缓存网页内容。如果网页没有更新的话,浏览器再次访问这个url地址的时候,就不会再次下载网页,而是直接使用� ...
- 2009-09-05 00:27
- 浏览 16938
- 论坛回复 / (16 / 30806)
rails2.3版本发布了,这个版本内部的改动非常大,相关介绍可以看javaeye这篇新闻:http://www.iteye.com/news/5390,估计最近也有不少人开始动手升级到rails2.3了,javaeye也不例外,这一升级才发现性能低得令人发指。
由于过于信任rails框架,没有进行本地性能测试,在通过了兼容性测试就兴冲冲上线了。这一上线,动态请求立刻堵了一大堆,仔细看了看fastcgi的crash log,发现大量请求在flush数据的时候发生broen pipe。打开rails2.3新采用的rack框架源代码当中fastcgi的adapter一看,这代码写的太不负责了!fa ...
- 2009-03-23 18:05
- 浏览 14244
- 论坛回复 / (90 / 42146)
rails应用比较容易遇到的两类性能问题:一类是rails执行很慢,cpu消耗过高;另一类是rails进程内存泄漏。解决这两类问题都需要你首先能够精确定位出现问题的代码,然后才知道如何对症下药。
一、如何监控rails进程的执行性能
定位消耗cpu高,执行速度缓慢的rails代码,是相当容易的事情,仅仅需要你对production.log做一点统计分析,抽取出来执行时间最长的请求,问题就昭然若揭了。由于production.log对rails请求的执行时间做了详细的统计,例如:
completed in 0.00693 (144 reqs/sec) | rendering: 0.00489 ...
- 2008-12-30 21:56
- 浏览 10831
- 论坛回复 / (14 / 12902)
javaeye之前的新闻ruby内存泄漏的罪魁祸首 - 幽灵指针详细分析了当前ruby官方版本(mri版本)内存泄漏的原因。如今brent roman发布了一个超级大补丁包,里面包含了6个补丁文件,用来解决ruby内存泄漏问题,而且还可以提高ruby的性能。用了该补丁以后,效果如何呢?让我们用rails应用来测试一下。
安装 brent roman的mbari补丁包的办法,javaeye的新闻解决ruby内存泄漏的超级大补丁发布啦已经介绍了,这里不复述。
一、测试环境介绍
amd64位的服务器,suse linux,gcc3.3.3,分别测试如下四个版本的ruby解析器:
1、ruby ...
- 2008-12-23 12:19
- 浏览 4997
- 论坛回复 / (9 / 5672)
这是一个从pragdave的博客上面学来的技巧,很实用,很cool!
话说在一个运行着rails的网站上面,我们可以用linux的top命令来监控rails应用程序实例的运行状况,占用的内存,消耗的cpu等等,例如javaeye网站的某一刻的截图:
在这个截图里面,我们可以了解rails进程实例的运行状况,但是我们无法确切的知道,某个当前时刻消耗cpu很高的fcgi进程究竟在执行哪个请求,如果能够确切的了解这个信息,对于寻找性能瓶颈有极大的帮助,所以下面看我们来变个魔术:
在你的rails应用的app/controllers/application.rb里面增加两个filter,如下 ...
- 2008-12-01 14:15
- 浏览 9760
- 论坛回复 / (19 / 10207)
ruby虽然是动态脚本语言,但是和java一样,带有vm,有自己的内存堆,创建对象的时候在堆里面分配内存,对象使用完毕由gc进行回收。但是通过我们运营rails网站两年多的实践来看,ruby vm的gc还是存在很大的问题。简单的来说,� ...
- 2008-09-02 23:41
- 浏览 8869
- 论坛回复 / (10 / 10795)
今年年初的时候,我写了一篇ror部署方案深度剖析的文章,分析了rails的进程运行方式下各种部署方案的优缺点,以及采用什么部署方案最优的话题。当时我没有给出具体的性能评测数据,因为我觉得运行的机制原理很清楚的情况下,没有做评测的必要性。但不管怎么说,一份详细的性能评测数据还是更有说服力,因此我很欣喜的看到shiningray的这份评测报告有多么宝贵的价值。
浅析ruby on rails部署方案
shiningray的博客文章
在这份评测报告当中,shiningray给出了更多的主流部署方案、详细的分析和丰富的测试数据,可以算是ror部署方案性能测试之集大成者了。所以没什么好说的,强烈推 ...
- 2008-07-08 11:55
- 浏览 9460
- 评论(8)
- 论坛回复 / (6 / 5071)
有人说,robbin你说了那么多ror的优点,你啥时候说说ror的缺点阿?你说的缺点肯定比别人说的更客观。没办法,为了表现出来我不是一个ror粉,只好总结点缺点,以飨ror黑子们:
ruby和rails的一些缺点的总结:
ruby的问题我觉得主要是:
1、ruby本身的性能是比较差的,无法直接做一些计算密集型的任务
比方说大量的分词运算、语料训练什么的,用ruby写是不行的
2、ruby的c扩展很难写
正因为ruby性能差,所以很多情况下要依赖c写的底层库,但是写ruby的扩展c库是很困难的事情。一方面没有特别多的资料介绍,你能参考的只有《ruby hacking guide》,另外 ...
- 2008-06-25 21:08
- 浏览 17266
- 分类:编程语言
skynet是一个很响亮的名字,因为它是阿诺施瓦辛格主演的经典系列电影《终结者》里面的统治人类的超级计算机网络。不过本文的skynet没这么恐怖,它是一个ruby版本的google map/reduce框架的名字而已。
google的map/reduce框架实在太有� ...
- 2008-06-02 00:39
- 浏览 8223
- 论坛回复 / (10 / 13153)
我在前一篇文章向大家介绍了libmmseg实现ruby的中文分词,在这篇文章当中向大家介绍另外一个优秀的ruby中文分词程序rmmseg-cpp。
rmmseg是浙江大学的学生pluskid开发的纯ruby版本的中文分词程序,采用的也是“基于词典的最大匹配算� ...
- 2008-05-27 00:47
- 浏览 11124
- 论坛回复 / (1 / 4796)
用ruby on rails开发web2.0网站的人都知道,ruby的全文检索功能不像java支持的那样好,要提供中文的全文检索功能是一件很困难的事情,而偏偏全文检索是web2.0网站绕不过去的一道坎。虽然ruby也有类似lucene的全文检索软件ferret,但是ferret本身并没有提供中文分词功能,必须自己另行扩展中文分词功能。因此攻克ruby中文全文检索功能的瓶颈在于提供ruby的中文分词功能。
java的lucene虽然也没有中文分词功能,但是现在有很多第三方开源的java中文分词项目,因此java的中文分词并不是一个难以解决的问题。但对于ruby来说,由于ruby的性能相当差,因此 ...
- 2008-05-24 21:43
- 浏览 11220
- 论坛回复 / (9 / 10218)
passenger(俗称mod_rails)是最近刚刚发布的apache module项目,刚一出来就得到了诸多好评,javaeye新闻也有两篇报道:
rails部署也可以简单得像php一样
passenger(mod_rails)新的ror部署方式
其中性能评测更加令人印象深刻
好像还有人称,� ...
- 2008-04-13 14:32
- 浏览 8022
- 论坛回复 / (8 / 6325)
之前写过一篇在linux平台上安装和配置ruby on rails详解,可能是有点高估了linux的普及和应用程度,无数安装和配置的问题都以各种方式向我涌过来。这里集中的提供一下疑难解答:
一、到底我应该用lighttpd,还是nginx/mongrel?
现� ...
- 2008-03-07 11:09
- 浏览 14711
- 论坛回复 / (10 / 12187)
javaeye网站从2006年9月11日上线基于ror的2.0版本开始,到现在已经运行了将近一年半了。在这一年半的时间里,javaeye网站的每日pv从最开始的5万,缓慢增长到了现在的60万。随着网站负载的不断增加,我们也在不断尝试和调整网站� ...
- 2008-01-20 16:11
- 浏览 18300
- 论坛回复 / (18 / 32263)
ror的部署方案可谓五花八门,有apache/fastcgi方式的,有nginx/mongrel方式的,还有lighttpd/fastcgi方式,也有人使用haproxy/mongrel,各种部署方式都是众说纷纭,让人搞不清楚哪种方式更好一些。我的这篇文章就是希望结合我们运营javaeye网站一年多以来的经验(通过统计rails的production.log,javaeye网站目前每天处理超过70万200 ok状态的ruby动态请求,应该是国内目前负载量最大的ror应用了),为大家剖析ror部署方案的优劣,帮助大家选择适合自己生产环境的ror部署方式。
在讨论部署方案之前,先让我们看一下ror ...
- 2008-01-14 03:10
- 浏览 14662
- 论坛回复 / (16 / 32264)
传统的web服务器在处理文件下载的时候,总是先读入文件内容到应用程序内存,然后再把内存当中的内容发送给客户端浏览器。这种方式在应付当今大负载网站,音频视频网站力不从心。sendfile是现代操作系统支持的一种高性能网络io方式,操作系统内核的sendfile调用可以将文件内容直接推送到网卡的buffer当中,从而避免了web服务器读写文件的开销,实现了“零拷贝”模式。
作为最流行的轻量级web服务器的翘楚,lighttpd提供了良好的sendfile支持,javaeye网站服务器使用的就是lighttpd。在linux操作系统上面,只需要在lighttpd.conf配置文件如下配置,light ...
- 2008-01-12 17:45
- 浏览 10137
- 论坛回复 / (11 / 22011)
孟岩最近写了一篇博客:
ruby 1.9不会杀死python
这篇文章很有点标题党的意思,所以在javaeye论坛很快被水掉了,只好锁贴:
http://www.iteye.com/topic/153651
但我个人对于孟岩的观点是不敢苟同的。首先我并不同意所谓魔幻语言和简� ...
- 2008-01-07 20:08
- 浏览 15674
- 分类:编程语言
万众瞩目的ruby on rails 2.0已经发布了,rails框架在2004年诞生以来,一直保持着相当快的版本升级速度:2005年发布了rails1.0版本,2006年初发布rails1.1版本,2007年初发布rails1.2版本,而还没有等到2008年,在2007年圣诞前夕的12月6日,rails2.0已经发布。
rails框架每个大的版本升级都给我们带来了相当多的新功能,新惊喜。rails1.0带给我们完善的单元测试和集成测试;rails1.1带给我们database migration和rjs;rails1.2让我们看到了rest的光明前景,那么rails2.0又将带给我们什么呢? ...
- 2007-12-10 21:32
- 浏览 15529
- 论坛回复 / (10 / 23875)
在java平台上面,lucene是众望所归的全文检索工具,lucene性能不俗,程序稳定,第三方扩展和分词算法众多,但是在ror方面,就没有那么幸运了,javaeye网站要做全文检索,怎么来解决全文检索的问题呢?
在ruby平台上面,全文检索有三个途径:
1、solr, acts_as_solr
solr是apache开源组织的一个项目,完全基于lucene的最新版本,在lucene的上层提供了一个基于http/xml的web services。solr的发行包自己绑定了jetty6.0应用服务器,可以直接启动,成为一个独立的全文检索的web服务。
由于和solr的通讯方式是标准的基于h ...
- 2007-09-28 17:07
- 浏览 18273
- 论坛回复 / (17 / 18763)
sphinx的含义是“狮身人面像”,是古埃及的金字塔建筑,传说sphinx是有翼的狮身女怪,她常叫过路行人猜谜, 猜不出者即遭杀害。
但是我这里说的sphinx是一个高性能的搜索引擎:
http://www.sphinxsearch.com/
sphinx是一个俄国人开发的搜索引擎,它的主要特点是:
一、性能非常出色
150万条记录一两分钟就索引完毕,2-4gb以内的文本检索速度不到0.1秒钟。ferret也望尘莫及,更不要说lucene了。
二、和数据库集成性很好
sphinx通过配置文件可以自行读取数据库信息做索引,不依赖任何外部的应用程序,并且可以作为一个daemon进程启动,支 ...
- 2007-09-10 19:02
- 浏览 23096
- 论坛回复 / (25 / 26038)
rails的actionview::helpers::texthepler模块提供了很多实用的方法,这些方法对于论坛类应用非常有用,例如auto_link这个方法可以自动检测传入字符串当中的url,并将其自动转换为html超链接格式,这对于显示帖子的内容来说很不错。
但是在开发javaeye3.0的时候,却发现auto_link有bug,一旦帖子当中的url后面紧跟中文的话,auto_link就会把url后面所有的中文当做url的一部分进行格式化,直到碰到空格为止,例如:
引用http://www.iteye.com网站很不错
就会被格式化为:
引用
- 论坛回复 / (10 / 20387)
javaeye3.0的开发计划都喊了好久了,现在还刚刚开始,只完成了很少的一部分。为了3.0能够早日上线,我从这周开始把自己的大部分时间投入了编码工作。借这个机会,我准备边开发javaeye3.0,边写写心得体会,与大家交流和分享� ...
- 2007-08-16 16:21
- 浏览 41126
- 论坛回复 / (18 / 52916)
web开发敏捷之道(第二版)
《web开发敏捷之道(第二版)-应用rails进行敏捷web开发》这本书的中文版已经上市,关于这本书在ror书籍市场的地位就不用赘述了。有意思的是,这本经典的ruby on rails教科书和我们javaeye网站非常有缘分:
去年8月份,这本书第一版中文版上市的时候,正值我们使用ruby on rails开发javaeye2.0的关键时期,所以我毫不犹豫购买了三本,开发团队人手一册,那个时候,我们开发团队也是刚刚开始学习ruby on rails,所以的确帮了不少忙。今年8月份,这本书第二版中文版也上市了,刚巧我们开发团队正在开发javaeye3.0,这次是完 ...
- 2007-08-13 14:57
- 浏览 19274
- 论坛回复 / (15 / 27073)
ror的部署方式从架构上来说分为前端和后端:
一、前端
前端的作用就是处理静态资源,将动态请求分发到后端,有时候也带有一些额外的功能,例如对特定url进行rewrite和redirect,对http输出进行gzip压缩等等。
前端目前已知的可以选择apache, lighttpd, litespeed, nginx, haproxy
1、apache2.2
apache是全球市场占有率最高的web server,超过全球互联网网站50%的网站都用apache。apache2.2 mod_proxy_balancer是一个非常流行,非常稳定的方案。
使用apache2.2唯一的问题 ...
- 2007-07-06 22:21
- 浏览 14692
统计网站的访问量有很多专业的第三方工具,例如google analytics,提供强大,而且详细的统计功能。当然,也许不是每个人都需要这么复杂而且操作麻烦的工具,如果你只是需要大概了解一下网站的访问量和访问url的比例,那么让我们看看最简单最容易的统计工具:unix shell。
一个ror网站的访问纪录,web server(apache or lighttpd)会记录所有的访问请求,包括动态请求和静态请求,但大量图片,js,css的请求对我们没有太大的统计价值,因此web server的日志参考价值就不大。
ror会记录所有动态请求日志到log/production.log里面,我们要做 ...
- 2007-07-03 13:46
- 浏览 12008
- 论坛回复 / (8 / 11550)
5月17日在美国波特兰举行了railsconf2007大会,在本次ruby on rails盛会,一众ruby社区大佬自然纷纷亮相,ror作者dhh,dave thomas,david a black, chad folwer等等,连robert c martin也献身演讲。大会的演讲内容基本上集中在rest,ror的部署,单元测试等几个主题上来。大家可以下载大会演讲稿参考:
http://conferences.oreillynet.com/pub/w/51/presentations.html
大会照片:
http://www.flickr.com/photos/x180/sets/721 ...
- 2007-06-01 18:30
- 浏览 13986
- 论坛回复 / (19 / 16538)
在rails里面,我们可以用很方便的声明方式来定义model之间的关联关系,例如:
class topic < activerecord::base
has_many :posts
belongs_to :user
end
那has_many和belongs_to究竟是什么东西呢?其实他们是topic类的class method,标准写法是:
class topic < activerecord::base
topic.has_many(:posts)
topic.belongs_to(:user)
end
那么has_many可以 ...
- 2007-05-05 21:59
- 浏览 10437
- 论坛回复 / (7 / 10890)
« 上一页 1