我有一个Rails应用程序的设置,如下所示:
根据我的研究,Postgres会在一段时间后断开数据库连接。在此期间,从Rails方面来看,
我查看了以下问题和答案,但它们似乎不适用于我的情况:
- Rails:3.0.5(在Apache代理下)运行于RHEL 5.6
- Postgres:8.4,运行在Windows Server 2008上。这两个服务器在同一局域网内。
ActiveRecord::StatementInvalid (PGError: server closed the connection unexpectedly
This probably means the server terminated abnormally
before or while processing the request.
根据我的研究,Postgres会在一段时间后断开数据库连接。在此期间,从Rails方面来看,
- 如果我向Rails发出请求(第一个请求),它将显示上述的连接错误
- 如果我再次向Rails发出请求(第二个请求),Rails似乎会重新连接到Postgres并正常工作。
我查看了以下问题和答案,但它们似乎不适用于我的情况:
- "PGError: no connection to the server" after idle(Ubuntu用于DB服务器)
- How to use tcp_keepalives settings in Postgresql?(在MacOS中使用keepalives)
verify!
和active?
方法的实现;通常情况下,ActiveRecord::ConnectionAdapters::ConnectionPool
会在从池中获取连接之前给适配器一个重新连接任何过期连接的机会。你正在使用哪个 Postgres 的 gem? - vladr