浏览 704 次
|
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
|---|---|
| 作者 | 正文 |
|
最后更新时间:2007-12-01
Rails站点压力测试及优化方案
傲游招聘站案例分析 傲游招聘站压力测试情况 · 11月1日之前,大量的使用请求路由(Routing Requests),使用静态页.在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 on rails应用性能优化之道 · 缓存的静态页面路径要和url对应上,否则还是要经过请求路由. · 参照上一条,还是尽量少用请求路由,或者用的话,也一定要让缓存路径和url匹配. · 参照以上几点,似乎只有页面缓存才是最终的安全之道,片段缓存只能说是提高执行时的效率. 有待考虑的问题 · 如果mongrel这么脆弱不堪,应该如何防范DDOS攻击mongrel呢?总会有非静态页的. 文章引用自: 声明:JavaEye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
|
|
| 返回顶楼 | |
|
最后更新时间:2007-12-01
1,多个mongrel实例负载均衡
2,后台用monit/runit监控mongrel 参考RubyWorks Production Stack的配置就行了 |
|
| 返回顶楼 | |
|
最后更新时间:2007-12-03
多谢gigix
|
|
| 返回顶楼 | |




