我在Heroku上部署了一个Rails 4应用程序,用于生产,并带有自定义域。我还有一个暂存版本。 该应用程序使用舒适的墨西哥沙发。
出现以下问题:应用将达到所有请求都返回 500 错误的状态。 日志显示:
[jesse@Athens expat]$ heroku logs
ActiveRecord::ConnectionTimeoutError (could not obtain a database connection within 5.000 seconds (waited 5.000 seconds)):
[jesse@Athens expat]$ heroku pg:info
Connections: 5
[jesse@Athens expat]$ heroku pg:ps
pid | state | source | running_for | waiting | query
-----+-------+--------+-------------+---------+-------
(0 rows)
[jesse@Athens expat]$ heroku pg:killall
pg_terminate_backend
----------------------
t
t
t
t
t
(5 rows)
后续连接尝试会导致 500 错误,数据库连接保持在 0。
在我使用本指南创建自定义错误页面后,此问题出现了:http://wearestac.com/blog/dynamic-error-pages-in-rails。
我可以通过创建一个使用数据库的 404 页面,然后向服务器发出大约 5 或 6 个不存在页面的请求来强制解决问题。
编辑:
我可以在使用静态自定义 404 页面时通过对具有 jpeg 扩展名的不存在的文件发出 5 或 6 个请求来强制解决问题。 日志中将显示以下内容:
Error during failsafe response: Missing template errors/not_found, application/not_found with {:locale=>[:en], :formats=>[:jpeg], :handlers=>[:erb, :builder, :raw, :ruby, :jbuilder, :coffee, :haml]}. Searched in:
2014-02-17T17:26:14.595469+00:00 app[web.1]: * "/app/app/vi
ews"
2014-02-17T17:26:14.594508+00:00 app[web.1]: Completed 500 Internal Server Error in 7ms
任何帮助隔离此问题将不胜感激。 提前致谢
下面是功能控制器代码:
class ErrorsController < ApplicationController
def not_found
respond_to do |format|
format.any(:htm, :html, :xls, :xlsx) { render :status => 404, :layout => "error_frame", :formats => [:html] }
format.all { render nothing: true, status: 404 }
end
end
def unacceptable
respond_to do |format|
format.html { render :status => 422, :layout => "error_frame" }
format.all { render nothing: true, status: 422 }
end
end
def internal_error
respond_to do |format|
format.html { render :layout => false, :status => 500 }
format.all { render nothing: true, status: 500}
end
end
end