当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 1 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : Rails站点压力测试及优化方案-mongrel让我爱来让我恨
帖子发表于 : 2007-11-01 15:32 

注册: 2007-05-09 23:41
帖子: 14
送出感谢: 0 次
接收感谢: 0 次
http://www.ruby-lang.org.cn/forums/thread-1814-1-1.html

Rails站点压力测试及优化方案
傲游招聘站案例分析
傲游招聘站压力测试情况· 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呢?总会有非静态页的.


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 1 篇帖子 ] 

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 1 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译