Boohee ruby on rails practise

20
薄荷网 Ruby on Rails 开发运营实践 Vincent 2010.10.31

Transcript of Boohee ruby on rails practise

薄荷网 Ruby on Rails开发运营实践

Vincent

2010.10.31

薄荷网介绍

• 中国最大的减肥网站• 每日动态请求约 200 万• 基于 Ruby on Rails 开发

提纲

• 部署网站• 监控应用• 优化性能• 扩展系统

部署网站 1

• Server 的选择– Linux vs Windows– Apache vs Nginx vs Lighttpd– Mongrel vs Fastcgi vs Passenger2

目前主要选择 Linux + Nginx + Mongrel

理由:可接受的性能,稳定可靠,分布式部署计划迁移 Passenger3 , Passenger3 有出色改

部署网站 2

• 慢请求影响整体性能• Load balance

– nginx-upstream-fair– passenger_use_global_queue

监控应用 1

• 监控什么– 进程意外 crash 时自动重启– 进程极度消耗资源时自动重启– 出现异常情况时告警

监控应用 1

• monit– monit 是管理和监控 Linux 进程、文件和设备

的工具,配置强大灵活• runit

– runit 是管理 Linux 服务进程的工具,避免僵尸

监控应用 1

• mont + runit 监控配置例子

参考: http://rubyworks.rubyforge.org/

监控应用 2

• Bug 总是存在的,怎么及时发现和修正• 使用 Exception Logger 让你睡得更踏实一

些– 把触发的所有异常信息保存到数据库中– 提供检索和查看异常功能Exception Logger 参考: https://github.com/defunkt/exception_logger

优化性能 1

• 深入了解应用的性能状况– 最多的 request 是哪些– 耗时 ( 平均 ) 最多的 request 有哪些– Render 耗时最多的 request 有哪些– Database 耗时最多的 request 有哪些

优化性能 1

• 使用 gem request-log-analyzer– Top requests by hits

– Top requests by duration– Top requests by render time– Top requests by database time– Generate SQLite Database

优化性能 1• 使用 request-log-analyzer 的一个例子

优化性能 2

• 进程不能开太多,慢请求会严重阻塞系统• 大多慢请求允许异步执行

优化性能 2

• 使用异步处理– 使用 Rake 任务– 使用消息队列

• Starling• Workling

Starling 参考: https://github.com/starling/starling

Workling 参考: https://github.com/purzelrakete/workling

扩展系统 1

• 最简单方法 -- 增加服务器,增加服务器后– 如何做请求的负载均衡– 如何统一写文件的源– 文件如何同步

扩展系统 1

• 负载均衡和分布式部署– Nginx Proxy 做负载均衡– NFS 统一写文件的源– Sersync + rsync 文件实时同步

Sersync 参考: http://code.google.com/p/sersync/

扩展系统 2

• 与其他技术平台集成– 全文检索 Solr + Acts_as_solr

– 图片处理 MiniMagick + ImageMagic– 支付接口:支付宝, PayPal 和快钱

总结

• 痛并快乐着– 高效和优雅

• web 开发最佳实践的集大成者• 为 web 开发量身定制• 强大的 DSL 能力,代码量少

– 很多时候没有现成的解决方案,需要自己摸索– 招人最痛苦,所以…

诚聘 ROR 牛人

• 和美女一起工作,为美女服务• 在一座幽美的独立别墅里办公• 极富挑战的工作,丰厚的回报

有意者,请联系我, Email: [email protected] , QQ: 5511595参考 http://www.boohee.com/boohee/zhaopin

谢谢!Q&A