Rails3中的性能分析方法

(转帖请注明出处: http://taobaotest.ruoguschool.com/blogs/2064) 性能分析是Web应用开发中非常重要的一个环节,相比访问缓慢的站点,访问快速的站点拥有更好的用户体验,帮助用户节省更多时间,带来更多的用户访问。 作为当前十分流行的Web框架,rubyonrails当然也提供很多方式进行性能分析。 几种常见的方式 Rails日志文件 Rails日志文件中,清晰的打印出了总时间,以及MVC各层消耗的时间,这为性能瓶颈分析提供了最直接的数据。例如,从下面的日志可以看出DB:1.2ms,View: 4.3ms,总时间:13ms Started GET "/issues/attachments/86674" for 10.13.46.33 at 2012-0... 详情

使用syslog-ng搭建日志服务器

(转帖请注明 http://taobaotest.com) 淘宝的测试管理系统,使用Rails3开发,并在线上生成环境采用了ngingx+passenger的分布式部署,rails日志存储在各自应用服务器的rails.root/logs目录下,这种方式导致日志存储分散,不利于日志分析和查看。 为了解决上述问题,需要为rails应用集群搭建日志服务器,选择了目前IO较低的服务器A来搭建,环境如下: syslog-ng 服务器搭建 日志服务器配置 日志服务器: 服务器A 软件:syslog-ng 3.0(标配软件,不需安装) 配置文件: /etc/syslog-ng/syslog-ng.conf 要架设日志服务器,需要添加以下配置: sudo vim /e... 详情

搭建rubygem repository server

(转帖请注明 taobaotest.com) 这不是一个新鲜话题,已经有博文讲过用IIS搭建gem server,但我想讲个简单的办法,以及怎样使用nginx来搞 做rails开发通常需要gem install xxx/bundle install安装依赖的gems,我们通常访问这两个gem server: http://rubygems.org - ruby官方的gem server http://gems.github.com - github上托管的gem,包含很多第三方的gem,通常比rubygems.org上的还要多。 最近国外网络访问老是不正常,安装gem包相当痛苦。昨晚尝试搭建搭建自己的gem server,解决团队成员安装gem的问题,有两... 详情

在Rails中用Fusioncharts开发图表

开发一个报表可供选择的报表很多,如openflashchart,hightchart,fusioncharts等。都是一些不错的选择。对比之下,frusioncharts将图表生成图片返回给前端或者保存在后端更容易,而且fusioncharts的渲染是将数据和flash分离,提供多数据组合展示。所以,我在开发处理图表时选择了fusioncharts(以下简称FC)。 FC还有个免费版本,叫:FusionChartsFree。但是只有22个图表模板。而标准版本的FC有近50个图表模板。 FC的实现原理是基于flash,解析json/xml数据,然后再生成相应的图表。查看官方文档可以发现有不少的模板可供使用,并且我发现老外写的文档就是好,不仅将每个图表的属性、示例给出来,还提供了一些现... 详情

Rails中的序列化、反序列化

为了支持运行时对象存储或传输的数据流,现代编程语言大多支持序列化技术,例如:java/dotNet,对于高度动态的ruby语言来说,序列化技术同样有很好的支持。 序列化 序列化是指把运行时对象(这里是ruby对象)转换为可永久存储或传输的数据流,反序列化则是从数据流转换成运行时对象。Rails提供了三种序列化技术:yaml, xml, json。 TDBank使用yaml进行序列化,用于保存数据快照。 Ruby基础类型序列化 Yaml支持ruby内建数据类型 用户自定义类型序列化 扩展类型(例如:BmwUser类型)。扩展类型需要重写to_yaml_properties函数,告诉yaml保存哪些对象属性,例如Tdmodel::DbConn类: module Tdmodel c... 详情

Rails遗留数据库访问之四使用tdmodel插件

本文根据Rails遗留数据库访问之一、二、三文档中提到的问题,给出了整合解决方案:tdmodel插件。 淘宝的测试工具“TD银行”就是使用这个插件完成数据库访问的。现在,这个插件已经上传到github了:http://github.com/arthasgo/tdmodel。 Tdmodel提供如下核心功能: 1、  根据数据模型自动创建ORM映射; 2、  rails编码与数据库编码自动转换; 3、  多数据库并发访问; Tdmodel运行流程 Tdmodel加载的时候会自动在/config/legacy_db目录下寻找遗留数据库配置、和数据模型,并自动完成数据表ORM映射: Tdmodel应用实例 假设有个两个遗留数据库,book_db1/book_db2,里面有3张数... 详情

Rails遗留数据库访问之三数据库编码自动转换

Rails默认使用utf8编码,而大多数数据库使用本地编码,例如淘宝的oracle数据库多大使用GBK编码。所以,在数据库访问时,如何处理两种不同的字符编码是一件很重要的事情。 本文通过扩展ActiveRecord实现了Rails与数据库编码的自动转换。 手动转换编码的黑暗时代 我们先看一下在编码自动转换之前是怎么做的,比如,有一个数据表books使用GBK编码,有下面ORM映射: class Book gbk_name, gbk_author 读取对象需要这样: book = Book.find :first utf8_name = Iconv.conv('utf-8//IGNORE','gb2312//IGNORE', book.name) 查... 详情

Rails遗留数据库访问之二分库分表

在大型数据库中不可避免遇到分库、分表问题,ActiveRecord对此提供了间接支持。 改变数据库链接 使用establish_connection ActiveRecord::Base支持为每个数据表设置不同的数据库链接,例如有一个数据表books拥有如下的ORM类: class Book ’The Ruby Way’ 使用magic_multi_connections插件 使用establish_connection改变数据库链接简单、直观,但显得比较啰嗦,而且容易忘记切换数据库。使用magic_multi_connections插件就可以避免这个问题,这个插件提供了不用切数据库链接,就能实现多数据库访问能力。 在使用的时候,需要为每个数据库建立一个module... 详情

Rails遗留数据库访问之一动态ORM

为了简化数据库访问,现代编程语言大多支持ORM(Object-Relation Mapping,对象关系映射),实现以程序对象的方式操作数据库,避免写SQL操作数据库。 Rails的ActiveRecord组件为数据库访问提供了很好的支持,只需要创建一个与数据表名关联的ActiveRecord::Base子类, 就能实现ORM: 例如:建立与books数据表ORM: # book.rbclass Book ’ The Ruby Way’, :author=>’ Hal Fulton’ Rails为字符串扩展了一个方法classify,来生成类名。ActiveRecord把数据表名books类名化,从而建立books与Book映射。为了实现Book类按需加载,需要... 详情

返回首页 博客 技术交流 产品 期刊下载 关于我们 意见反馈 无障碍

浙ICP备09109183号-14 Copyright © 2003-2015 TaobaoTesting.com 版权所有