【发布时间】:2021-01-30 03:06:41
【问题描述】:
我的故障排除陷入了死胡同,我真的希望有人能提供帮助。
我正在使用 rack-mini-profiler 来帮助定位我的 Rails 网站中的潜在内存泄漏。我将其范围缩小到正在调用的方法。
高层简介:rack-mini-profiler high-level
SQL 配置文件:rack-mini-profiler results
在 SQL 配置文件图片中,请注意灰色条上方和下方的查询开始时间相差 1037 毫秒。这是我注意到的延迟,它会一直增长,直到我重新启动应用程序。
在本地运行时,我可以监控终端。当请求该方法时,只有 1 秒的延迟,然后它就会执行。在此延迟期间,终端中不会显示任何查询或命令。
是否有人对我如何找出造成这种延迟的原因有任何想法?
我正在使用 Ruby 2.2.0 和 Rails 4.1.6。
谢谢!!
编辑:
这是 rack-mini-profiler 指向的方法:
def submit_answer
quiz_attempt = CourseCompletion.find_by_id(params[:course_completion_id]).quiz_started
choice = Choice.new(:answer_id => params[:answer], :quiz_attempt_id => quiz_attempt.id)
@success = choice.save
@answer = choice.answer
@question = @answer.question
@quiz_attempt = choice.quiz_attempt
render :layout => false
end
【问题讨论】:
-
submit_answer是罪魁祸首。一定是哪里出了问题,能不能分享一下这个方法? -
@RockwellRice 谢谢,我刚刚在上面的描述中包含了它。该网站是一系列测验。每次提交问题的答案时都会调用该方法。
-
你检查过控制器回调(钩子)吗? apidock.com/rails/AbstractController/Callbacks
-
您的操作的视图模板中有什么?
标签: ruby-on-rails ruby memory-leaks rack-mini-profiler