Dim*_*ris 3 postgresql firewall sqlalchemy
我有一个相当标准的设置,其中应用程序服务器由防火墙与数据库服务器分开.使用sqlalchemy和db的应用程序是postgres.
系统可以正常运行几个小时,但是一旦它长时间处于空闲状态,服务器和数据库之间的通信就会失败.错误日志是:
WARNI [sqlalchemy.pool.QueuePool.0x...7310] [worker 26] Error closing cursor: cursor already closed
Run Code Online (Sandbox Code Playgroud)
我设置了连接池,其中'pool_recylce'设置设置为30分钟,因此没有连接延迟超过30分钟.问题依然存在.
有任何想法吗?
您可能在客户端和服务器之间有一个状态防火墙,这会忘记空闲时间太长的连接.
您需要:
tcp_keepalives_idle=600 tcp_keepalives_interval=30 tcp_keepalives_count=60这意味着如果连接空闲10分钟,尝试每隔30秒发送一次keepalive探测,直到响应,如果忽略60个探测则关闭连接(连接断开30分钟);
禁用pool_recycle为恕我直言,它只有在你关闭连接时才有效.
| 归档时间: |
|
| 查看次数: |
1237 次 |
| 最近记录: |