论坛首页 编程语言技术论坛

JavaEye网站的RoR性能优化经验谈

浏览 32577 次
该帖已经被评为精华帖
作者 正文
   发表时间:2008-01-21  
虽不是ror程序员,仍然收获不少,好贴
0 请登录后投票
   发表时间:2008-01-21  
robbin 写道

这是两种不同的运行方式不可一概而论的。Apache以module的方式加载PHP,的确一个httpd不过20多MB内存,但是对于JavaEye这样访问量的网站来说,峰值访问期,apache需要fork出来150个httpd进程来处理,那么你算一下,150*20M = 3GB内存,是不是更加恐怖呢?同样的情况Lighttpd+FastCGI(Ruby),Lighttpd仅仅占用30MB内存,FastCGI开10 个就够了,总共需要30+180*10=1.8GB,你觉得哪种方式节省内存?

顺便说一句,Lighttpd+FastCGI(PHP)是比Apache更好的PHP部署环境,根据我的经验,FastCGI方式下的每个PHP进程保持在40-50MB左右的内存,总共需要30+50*10=530MB,比Apache的3GB,简直不可同日而语阿!


以前我一个同事做过测试,用lighttpd的fastCGI方式跑php,确实更节省内存,
不过在性能上中等访问量时反而比apache慢,小访问量和超大访问量时确又比apache快,这是在内存足够的情况下测试的。
0 请登录后投票
   发表时间:2008-01-21  
很难想像Apache会比Lighttpd快,处理静态资源的话绝对是Lighttpd的强项,而转发的动态请求的瓶颈不在Web Server而是Ruby.可能是php挂载的方式不同造成的,不能用来说明Lighttd与Apache之间的优劣
0 请登录后投票
   发表时间:2008-01-21  
真的是不错,实践中总结的经验尤为宝贵。谢谢robbin共享经验。
0 请登录后投票
   发表时间:2008-01-21  
yzx110 写道

以前我一个同事做过测试,用lighttpd的fastCGI方式跑php,确实更节省内存,
不过在性能上中等访问量时反而比apache慢,小访问量和超大访问量时确又比apache快,这是在内存足够的情况下测试的。


JavaEye2.0上线之前,我曾经用Lighttpd跑过半个月的JavaEye 1.0(PHPBB论坛),在此前我自己做的压力测试表明大负载量下面,Apache的module运行PHP比Lighttpd的FastCGI运行PHP要快不少,这一点和你的同事测试结果是吻合的。但实际上部署上线以后,Lighttpd以FastCGI方式运行PHP,比原来的Apache明显要快很多,所以测试不能等同于实际生产环境。

你要考虑到一个很重要的因素,在实际互联网环境下,用户浏览器发起请求,用户浏览器在接受页面数据的这两个过程一般都需要1-2秒延迟,而PHP程序处理往往只需要0.1-0.2秒,所以FastCGI方式下,你可以用很少的PHP进程去响应很大的并发量。但在测试环境下,这两个和用户交互的重要延迟时间被彻底抹杀了,FastCGI开了几个进程,就只能同时响应几个请求,其他测试请求就必须等待,当然会比Apache慢了。

例如你用ab并发100个请求,Apache会在很短的时间内fork出来100个进程同时处理,但是FastCGI只有10个进程,他只能同时处理10个请求,其他请求必须等待,因此在测试环境下大并发量FastCGI就显得慢得多。但实际互联网环境下并不是这么回事,除了浏览器的请求和页面下载的延迟作用可以导致FastCGI显得更有效率之外,一个动态请求还会附带n个js,css,图片的请求,对于apache来说,都需要fork进程处理这些静态资源,而这些负载在ab测试当中都无法被体现出来。


9 请登录后投票
   发表时间:2008-01-21  
好帖子,感谢robbin的分享,对于后来人而言少走了很多弯路,再次感谢robbin的分享精神。
0 请登录后投票
   发表时间:2008-01-21  
感谢Robbin最近的几篇文章,受益匪浅~~
0 请登录后投票
   发表时间:2008-01-21  
robbin的学习能力,对问题的定位,分析能力,不尽另我们这些后辈佩服,向你多学习了
0 请登录后投票
   发表时间:2008-01-21  
十分感谢robbin,受益匪浅。
0 请登录后投票
   发表时间:2008-01-21  
rmagick优化可以见此篇http://rubyforge.org/forum/forum.php?thread_id=10975&forum_id=1618
现在RMagick基本上都是自己编译的
Installing RMagick on Linux, *BSD, or Cygwin systems
RMagick号称可以自己删除不需要的对象,还没有试过。
About RMagick 2
0 请登录后投票
论坛首页 编程语言技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics