我在带有SQL Server数据库的Windows计算机上有一个Rails应用程序,并且大多数时候(虽然并非总是如此)它的运行速度非常慢。奇怪的是,这种情况只发生在我将应用程序迁移到更新的机器上 - 当应用程序在旧机器上运行时,它运行正常。我不熟悉处理服务的事情,那么我应该考虑解决问题的方法是什么?
我尝试查看日志,但它们似乎不正确。例如,我正在生产模式下运行应用程序,所以查看production.log,我在上一次请求中看到以下内容:
Started GET "/experiments" for 197.57.189.98 at 2011-04-07 12:14:40 -0700
Processing by ExperimentsController#index as HTML
Rendered experiments/_experiment_table.html.erb (5.0ms)
Rendered experiments/_experiment_table.html.erb (13.0ms)
Rendered experiments/_experiment_table.html.erb (3.0ms)
Rendered experiments/_experiment_table.html.erb (2.0ms)
Rendered experiments/_experiment_table.html.erb (2.0ms)
Rendered layouts/_header.html.haml (1.0ms)
Rendered experiments/index.html.erb within layouts/application (5410.5ms)
Completed 200 OK in 5671ms (Views: 500.1ms | ActiveRecord: 5162.5ms)
但是从导航到“/实验”到页面加载完成的时间实际上需要40秒。 (我不确定日志是否包含数据库访问时间?)
答案 0 :(得分:2)
这发生在我身上。这里缺少的最重要的信息可能就是您正在使用的Web服务器。 Rails日志将显示处理请求所花费的时间,但未显示Web服务器将请求传递到rails堆栈所花费的时间。
在某些情况下,配置不正确的Web服务器可能会导致请求的超时延迟,例如,执行始终失败的反向DNS查找。
您可以尝试使用几个Web服务器来测试它。在我的例子中,Webrick在页面加载时需要40秒,而Apache和Thin上的Passenger没有问题。我建议尝试使用备用Web服务器(通过命令行轻松测试,特别是使用thin和webrick)来查看问题是否消失。
然后您可以调试您的Web服务器设置。