rails服务器明明cache hit,但是DB用了很多时间为什么?

问题描述

最近我服务器相应变得非常慢,以下是log:Processing HomepageController#iphone to xml (for 123.150.158.147 at 2012-06-29 07:59:37) [GET] User Columns (12.6ms) SHOW FIELDS FROM `users` User Load (4758.7ms) SELECT * FROM `users` WHERE (`users`.`id` IS NULL) LIMIT 1Cached fragment hit: views/www.xxx.com/homepage/iphone.xml (26.4ms)Filter chain halted as [#<ActionController::Filters::AroundFilter:0xb7771b10 @kind=:filter, @options={:unless=>nil,nly=>#<Set: {"iphone"}>, :if=>nil}, @identifier=nil, @method=#<Proc:0xb7aa8bf8@/usr/local/rvm/gems/ruby-1.8.7-p352/gems/actionpack-2.3.4/lib/action_controller/caching/actions.rb:64>>] did_not_yield.Completed in 4870ms (View: 9, DB: 4777) | 200 OK [http://www.xxxcom/homepage/iphone.xml]我不知道为什么DB用了4777ms。。。。请问这个怎么查为什么?并不是所有请求都是这样的,就是有些请求会特别长。另外:有些log是这样的:Processing ProductsController#index to xml (for 222.134.168.129 at 2012-06-29 08:05:53) [GET] Parameters: {"page"=>"1", "page_size"=>"15"} User Load (0.7ms) SELECT * FROM `users` WHERE (`users`.`id` IS NULL) LIMIT 1Cached fragment hit: views/www.xxx.com/products.xml?page=1&page_size=15.xml (3.8ms)Filter chain halted as [#<ActionController::Filters::AroundFilter:0xb77478ec @kind=:filter, @options={:unless=>nil,nly=>#<Set: {"index"}>, :if=>nil}, @identifier=nil, @method=#<Proc:0xb7aa8bf8@/usr/local/rvm/gems/ruby-1.8.7-p352/gems/actionpack-2.3.4/lib/action_controller/caching/actions.rb:64>>] did_not_yield.Completed in 35ms (View: 1, DB: 1) | 200 OK [http://www.xxx.com/products.xml?page=1&page_size=15]请问这35ms占用了啥?我看出来cache hit用了3.8,view和DB都用了1?,那怎么会要35ms?谢谢!

解决方案

引用User Load (4758.7ms) SELECT * FROM `users` WHERE (`users`.`id` IS NULL) LIMIT 1是这句的时间过长。你的片段缓存命中和controller里的查询没关系。
解决方案二:
需要你对每一步的消耗进行分析,搞清楚到底是哪里消耗最大。

时间: 2024-11-02 14:44:55

rails服务器明明cache hit,但是DB用了很多时间为什么?的相关文章

ruby on rails服务器与springMVC spring ibatis服务器间怎么通信

问题描述 ruby on rails服务器与springMVC spring ibatis服务器间怎么通信 有两个web服务器: 1.ruby on rails搭建的 2.springMVC spring ibatis搭建的 怎么实现: 请求ruby服务器,然后通过ruby 重定向到java服务器,再然后java服务器将处理完的数据重新发给ruby服务器,最后由ruby将数据响应给浏览器. 望大牛给个详细的方案,谢谢! 解决方案 http://www.ibm.com/developerworks

同一台domino服务器如果存在1个DB的2个复本,对文书或者view的链接会造成混乱吗?

问题描述 如题. 解决方案 解决方案二:没印象,两个互为副本,等同于一个db解决方案三:应该没有影响把,副本也是有路径的,不可能在相同的路径的,比如你一个是放在/data/file1/xxx.nsf,副本放在/data/file2/xxx.nsf.访问的时候还和路径有关啊

ftp服务器-Windows7 访问FTP后,看到的文件时间超前了8小时,怎么处理

问题描述 Windows7 访问FTP后,看到的文件时间超前了8小时,怎么处理 FTP服务器是 Windows2003 64位操作系统,上面用的是简单的ftp工具. 客户端Windows7系统,用的Windows资源管理器打开的FTP地址,访问进去后,文件的时间更改了,比实际时间提前了8小时.但直接用IE,看到的时间是正常的,用FTP客户端工具连接后,看到的时间也是正常的,用服务器上资源管理器看也是正常的.用Windows7系统的Windows资源管理器看不正常,但是选定文件后,右键查看属性,看

|zyciis| 如何查看Context.Cache.Insert添加的缓存的过期时间呢? 谢谢

问题描述 this.Context.Cache.Insert("CacheTest","CacheContent",null,System.Web.Caching.Cache.NoAbsoluteExpiration,TimeSpan.FromSeconds(6000));如上面添加了一个6000秒未访问明清除这个缓存的代码那我现在想查看这个CacheTest还有多久过期,要怎么办呢谢谢 解决方案 解决方案二:凉拌解决方案三:该回复于2009-05-01 10:06

memory prefetch浅析

最近在用vtune分析程序性能瓶颈时发现一些内存访问的地方竟然成了cpu热点.经过仔细分析,发现这些热点主要是对大数组非连续位置的访问的引起的,比较消耗cpu的原因应该是cache不命中.因为像这样局部性很差的内存访问逻辑,对cache是很不友好的.于是想到了prefetch-- x86(以及其他很多体系结构的CPU)提供了prefetch系列指令,用于将指定地址的内存预取到cache.如:"prefetcht0 (%rax)",将以$rax所保存的值为地址的内存所在的cache li

在ASP.NET Atlas中调用Web Service—应用Cache减小服务器开销

asp.net|cache|web|服务器 对于一些复杂的,需要较长时间完成,并且对实时性要求不是很高的服务,选择Cache往往是一个有效的提高效率的方法..NET的Web Service实现充分考虑了对Cache的需求,您只需要简单的设定即可启用Cache.Atlas中对Web Service的调用也可以利用这一Cache机制,以减少服务器端不必要的开销. 要启用Web Service的Cache,您只需要在WebMethod的声明中添加如下属性: [WebMethod(CacheDurati

LinkedIn用Node替代Rails:减少了27台服务器 速度提升20倍

Ryan http://www.aliyun.com/zixun/aggregation/13830.html">Paul写过一篇<深入观察LinkedIn移动端的设计>,在其中我们看到:有23%的移动用户:专注朴素.易用以及可靠性:30%原生代码,70%使用HTML:嵌入轻量的HTTP服务:单一的客户端应用链接云服务器:后端服务从Rails转换到Node.js. 曾经在LinkedIn工作的工程师蓝奕凯补充道:移动促使产生了跨数据中心应用.运行在单线程的Rails服务器上(每

在阿里云 (aliyun) 服务器上搭建Ruby On Rails环境_ruby专题

1.阿里云的一键安装web全环境 下载一键安装web全环境 sh.zip 压缩包 上传至服务器,解压.执行脚本,具体步骤详见这里 $ mv sh.zip /home/tmp/ & cd /home/tmp $ unzip sh.zip $ chmod -R 777 sh & cd sh # 任意选择一种方法执行脚本 # 方法一 $ ./install.sh # 方法二 $ ./install_nginx_xxx.sh $ ./install_mysql_xxx.sh 2.安装RVM与指定的

说说标准服务器架构(WWW+Image/CSS/JS+File+DB)续测试环境搭建

前一篇说了标准的服务器架构方案,事实上,那是系统建立完成后的事情,在开发时,我们很少这种去设计,也没有必要这样去做,测试环境我们可以使用hosts这个文件来实现,我们可以把5个服务器放在一台电脑上,安装上IIS,然后分别建立站点,如 www.test.com www服务器 img.test.com  图像.脚本服务器 file.test.com  文件服务器 db.test.com  数据库服务器 html.test.com  静态页面服务器  如果测试的服务器IP是192.168.1.188,