[Rails站点部署]Rails站点压力测试及优化方案

[Rails站点部署]Rails站点压力测试及优化方案

http://www.sincenow.com/forum/dispbbs.asp?boardid=3&ID=19&replyID=31&skin=1


Rails站点压力php?name=%B2%E2%CA%D4" onclick="tagshow(event)" class="t_tag">测试及优化方案
傲游招聘站案例分析
傲游招聘站压力测试情况·   11月1日之前,大量的使用请求路由(RoutingRequests),使用静态页.在2000并发的测试下,mongrel很慢,动态页面出现堵塞情况.实际上线测试mongrel挂掉(5个mongrel进程)
·   11月1日改进后,除了提交和后台页面,其他页面都使用静态页,去掉了大部分请求路由.mongerl进程改为10个.
情况分析
·   虽然rails的缓存机制可以生成静态页面,但是如果我们认为生成静态页后就万事大吉了就大错特错了.rails站点获得url请求后,先到public目录下找相应文件,如果找不到再经请求路由到相应的controller里面找相应的action,然后生成页面.之前傲游招聘站的url都要经请求路由,所以并发量大的时候mongrel直接挂掉.
解决方法和注意事项·   查过很多资料,看过rails社区里对mongrel的评测,目前能解决mongrel并发量的方法只能是多开mongrel进程.”只要硬件管够,J2EE系统和Rails系统的网站负载能力不会有多大的差别”(关于rails大容量网站部署的性能讨论)
·   既然mongrel能承受并发量太小是一个目前难以解决的瓶颈,那我们只能尽量避开让大量用户直接访问mongrel服务.
·   由前端web服务器比如nginx(传说最多可以30000并发)或者apache(据mason调查限于硬件情况最多20000并发)来运行静态内容(html页面,图片,压缩文件,流媒体等).
·   列表类型的页面,用缓存来解决.如果对页面内容时效性要求不高,就可以设置定期缓存(Rails敏捷开发第一版380页有介绍).如果页面时效性要求高,就在每次更新的时候更新相应页面的缓存.
·   对于提交表单类型的页面,表单的交互(告诉用户填写信息是否满足要求)用Ajax技术来实现,整个表单页面为静态页.
·   性能优化注意事项
·   参考 ruby onrails应用性能优化之道
·   缓存的静态页面路径要和url对应上,否则还是要经过请求路由.
·   参照上一条,还是尽量少用请求路由,或者用的话,也一定要让缓存路径和url匹配.
·   参照以上几点,似乎只有页面缓存才是最终的安全之道,片段缓存只能说是提高执行时的效率.
有待考虑的问题·   如果mongrel这么脆弱不堪,应该如何防范DDOS攻击mongrel呢?总会有非静态页的.
哎,关于mongrel性能的问题大家很少有人讨论么?
一搜国内的论坛,关于mongrel的中文资料似乎只是处于怎么安装配置的阶段...
嗯,其实配置的文章也很少。

现在部署了Rails的项目也不会多。
引用:
原帖由 rushairer 于 2007-11-4 20:41 发表
哎,关于mongrel性能的问题大家很少有人讨论么?
一搜国内的论坛,关于mongrel的中文资料似乎只是处于怎么安装配置的阶段...
引用:
原帖由 rushairer 于 2007-11-4 20:41 发表
哎,关于mongrel性能的问题大家很少有人讨论么?
一搜国内的论坛,关于mongrel的中文资料似乎只是处于怎么安装配置的阶段...