Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails—请求的完成时间明显高于视图和数据库时间_Ruby On Rails_Performance_Logging - Fatal编程技术网

Ruby on rails Rails—请求的完成时间明显高于视图和数据库时间

Ruby on rails Rails—请求的完成时间明显高于视图和数据库时间,ruby-on-rails,performance,logging,Ruby On Rails,Performance,Logging,我有一个控制器,它从一个相当复杂的关系查询中返回JSON或XML,并带有一些控制器逻辑 我已经在数据库端进行了调优,优化了我的查询并确保我的索引对于我的查询是正确的 在我的日志中,我看到如下项目: Completed in 740ms (View: 1, DB: 50) 因此,如果我理解正确,这意味着视图渲染需要1秒,DB查询需要50ms。所有剩余时间是否都在控制器中?我试着绕过我的控制器逻辑,把我的to_json和to_xml放在那里,速度也一样慢。作为参考,我返回的JSON结果集的平均值是

我有一个控制器,它从一个相当复杂的关系查询中返回JSON或XML,并带有一些控制器逻辑

我已经在数据库端进行了调优,优化了我的查询并确保我的索引对于我的查询是正确的

在我的日志中,我看到如下项目:

Completed in 740ms (View: 1, DB: 50)
因此,如果我理解正确,这意味着视图渲染需要1秒,DB查询需要50ms。所有剩余时间是否都在控制器中?我试着绕过我的控制器逻辑,把我的to_json和to_xml放在那里,速度也一样慢。作为参考,我返回的JSON结果集的平均值是168k

是否还有其他步骤可以及时完成?它是否包括网络传输到最后一个字节的时间

更新:我将控制器的各个部分包装在基准块中:

self.class.benchmark("Active Record Find") do
  #my query here
end
我发现,尽管日志行显示DB:50,但我的活动记录查找几乎占用了剩余的所有时间。所以现在我搞不懂分贝数是什么意思,为什么基准线会说~600ms,而分贝:时间会是~50


谢谢

您的数据库号实际上是在数据库中花费的时间,但不是加载ActiveRecord对象


因此,如果您正在加载168000个ruby active_record对象以呈现为JSON,这将解释您的550毫秒(或更长!)

如果在开发环境中观察到这些时间,那么额外的时间可能是因为应用程序类没有被缓存。每次请求时都会重新加载应用程序文件


按照建议,尝试在
environment/development.rb
中设置
config.cache\u classes=true
,然后重新启动服务器,查看这对响应时间有何影响。请确保将此更改回
config.cache\u classes=false
,并在完成后重新启动服务器。

请发布查询和控制器逻辑您的意思是1毫秒以查看渲染?不是168k记录。价值168k的JSON文本。但是你是对的,数据库的持续时间很短,但是由于大量的:包含,“获取”很高。谢谢你澄清了那个数字的含义。我能集中精力解决这个问题。