0 0

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

最近我服务器相应变得非常慢,以下是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 1
Cached 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 1
Cached 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?

谢谢!


2012年6月29日 08:10

2个答案 按时间排序 按投票排序

1 1

采纳的答案

引用
User Load (4758.7ms)   SELECT * FROM `users` WHERE (`users`.`id` IS NULL) LIMIT 1

是这句的时间过长。你的片段缓存命中和controller里的查询没关系。

2012年6月29日 09:38
0 0

需要你对每一步的消耗进行分析,搞清楚到底是哪里消耗最大。

2012年6月29日 09:05

相关推荐

    Rails Cache

    综上所述,Rails Cache 是Ruby on Rails中提升性能的关键工具,涵盖动作缓存、片段缓存、页面缓存和低级别缓存API等多个层面,配合不同的缓存存储后端和失效策略,为开发者提供了强大的性能优化手段。在使用过程中,...

    Ruby-Rails应用程序的服务器时间标头

    在Ruby on Rails应用程序中,服务器时间标头是一个重要的性能监控工具。它允许开发者了解服务器处理请求所需的时间,从而帮助优化应用程序的性能。Rails框架默认并未开启服务器时间标头,但可以通过一些配置或第三方...

    启动Rails服务器指定端口号

    rails server命令启动web服务器的默认端口号为3000,当然我们也可以自定义指定端口号。

    使用Aptana+Rails开发Rails Web应用(中文)

    为了运行和测试应用,你需要在命令行中使用Rails服务器。在Aptana中,可以使用内置的终端工具。打开“Terminal”视图,输入`rails server`启动服务器,然后在浏览器中访问`http://localhost:3000`查看你的应用。 在...

    配置高可用的rails

    4. 会话共享:当应用部署在多台服务器上时,如何保证用户的会话信息在服务器间同步变得尤为重要。可以使用Redis、Memcached等缓存系统来实现会话信息的共享。 5. 故障转移与自动恢复:高可用配置还包括了故障转移的...

    chef-rails, 厨房设置一个可以与 Nginx 和 Rails 一起滚动的Ubuntu服务器.zip

    chef-rails, 厨房设置一个可以与 Nginx 和 Rails 一起滚动的Ubuntu服务器 主厨 rails安装一个准备为 Ruby on Rails 栈准备的Ubuntu服务器:NginxPostgreSQLRedisMemcached带RVM的rubyPhusion乘客独立要求Ubuntu ...

    Ruby on Rails Guides v2 - Ruby on Rails 4.2.5

    ### Ruby on Rails Guides v2 - Ruby on Rails 4.2.5 #### 一、重要概念及基础假设 - **重要概念**:本指南旨在帮助...随着对Rails的深入了解,你将会发现更多高级特性和应用场景,为实际项目开发提供更多可能性。

    Rails3常用命令行命令

    Rails3 是 Ruby on Rails 框架的一个版本,它提供了一系列强大的命令行工具,使得开发者可以快速地构建和管理Web应用。在本文中,我们将深入探讨Rails3中的常用命令,帮助你更高效地进行开发工作。 首先,新建一个...

    Rails入门教程一(翻译)

    - 使用命令`rails new forum --database=mysql`创建名为“forum”的项目,并指定使用MySQL作为数据库。此命令会自动在当前目录下创建一系列必要的文件夹和文件,包括但不限于: - `app`: 包含控制器、模型、视图等...

    linux-在Ubuntu服务器上安装Rails生产环境的脚本

    在Ubuntu服务器上搭建Rails生产环境是一项关键的任务,它涉及到多个步骤和组件的配置。Rails是Ruby的一个框架,用于构建Web应用程序。在这个过程中,我们将主要关注以下几个核心知识点: 1. **Ruby 安装**:首先,...

    rvm nginx passenger rails配置服务器.docx

    《使用RVM、Nginx和Passenger配置Rails服务器详解》 配置Rails服务器是一个关键步骤,特别是对于那些希望部署Web应用程序的人来说。在这个过程中,RVM(Ruby Version Manager)、Nginx和Passenger扮演着核心角色。...

    在Rails中使用SSL

    在Rails中使用SSL(安全套接层)是构建Web应用时确保数据传输安全的重要步骤。Rails框架支持在应用程序中轻松集成SSL,以保护用户敏感信息,如登录凭据和支付详情。以下是一些关于在Rails中实施SSL的关键知识点: 1...

    配置rails环境

    6. **启动Rails服务器**:使用`rails server`或简写`rails s`命令启动本地开发服务器。默认情况下,服务器会在http://localhost:3000/上运行。 7. **运行测试**:Rails项目通常包含测试套件,可以使用`rake test`或...

    Rails项目源代码

    Ruby on Rails,通常简称为Rails,是一个基于Ruby编程语言的开源Web应用框架,遵循MVC(Model-View-Controller)架构模式。这个“Rails项目源代码”是一个使用Rails构建的图片分享网站的完整源代码,它揭示了如何...

    ruby on rails 开发环境包(ruby1.8.7,rails2.2.3)

    在Rails 2.2.3时代,社区已经发展出很多插件和 gems(Ruby的扩展库),如Devise用于身份验证,CanCanCan进行授权管理,Paperclip或Carrierwave处理文件上传等。虽然这些可能需要适配老版本,但它们能极大地增强你的...

    rails 项目起步示例

    Rails是Ruby语言的一个著名Web开发框架,全称为Ruby on Rails,它遵循MVC(Model-View-Controller)架构模式,旨在提高开发效率和代码可读性。本示例"rails项目起步示例"是一个购物系统,非常适合初学者入门学习。 ...

    Ruby on Rails安装指南(Ruby 1.8.6+Rails 2.0.2)

    基本的组件包括Ruby语言环境、Ruby的包管理工具gem、Rails框架本身以及一个Web服务器,这里以Mongrel为例。 **知识点1:Ruby安装** Ruby是整个Ruby on Rails开发环境的核心,安装过程相对简单。首先,我们需要下载...

Global site tag (gtag.js) - Google Analytics