当我向rails服务器发送GET请求时,响应时间太长(29分钟)
以下是日志摘要
Log说代码中有错误,没关系,但是为什么需要这么长时间来回复(1723579 ms)我无法找到任何这种行为的原因。以前当服务器工作正常时,这个js请求只需要9毫秒来响应。但突然间它开始表现得像这样。我应该如何调试应用程序以跟踪此类意外行为的根本原因。
Started GET "/my-server/jobs/workers?_=1356363515400" for 27*.*.*.* at 2012-12-24 21:08:35 +0530
ActionView::Template::Error ():
1: <% @jobs.each do |job| %>
2: $('#cron_<%= job.id %>').attr('data-content', '<%= distance_of_time_in_words_to_now(job.next_fire_info, true) %>');
3: <% end %>
4:
5: <% @workers.each do |worker| %>
app/models/job.rb:16:in `next_fire_info'
app/views/jobs/workers.js.erb:2:in `block in _app_views_jobs_workers_js_erb__101155230_81985760'
app/views/jobs/workers.js.erb:1:in `_app_views_jobs_workers_js_erb__101155230_81985760'
Rendered jobs/workers.js.erb (1718348.7ms)
Completed 500 Internal Server Error in 1723579ms
我在Rails 3.1.3上, Ruby 1.9.3p194, MongoDB版本v2.2.0,pdfile版本4.5, 32位Ubuntu(12.04),2 gb ram
答案 0 :(得分:0)
3.1.5之前的rails 3.1版本有一个错误,当从视图中引发异常时,需要很长时间才能生成异常消息。
如果您无法更新到3.1.5,修复非常简单(请参阅修复它的commit) - 您只需要修补补丁:
module ActionDispatch
module Routing
module RouteSet
alias to_s inspect
end
end
end
我曾经在初始化程序中转储它。还有一个gem(safe_inspect)声称为你做这个,虽然我从来没有尝试过。
答案 1 :(得分:0)
最后我发现了花了这么长时间回应的原因。工作人员基于cron表达式定期运行。这个特定问题的原因是错误地输入了一个cron表达式。这就是为什么在执行“distance_of_time_in_words_to_now”时花费了太多时间。
答案 2 :(得分:0)
我有类似的问题,它是由身份验证引起的,所以这只是为了记录,如果有人将来有同样的问题。服务器没有让用户进入,然后重定向到受限制的页面等等。