docker中的数据库连接超时

时间:2019-01-11 18:02:07

标签: postgresql docker go

环境

  • 环境:Mac和Docker
  • 语言:GoLang
  • 数据库:PostgreSQL

预期行为

我们有一个用于连接数据库的连接池。数据库连接的时间可能从1分钟到20分钟不等,具体取决于所调用的功能。

实际行为

  • 在本地运行:一切都很好。
  • 在Docker中运行:少于5分钟的数据库连接就可以了。对于超过5分钟的数据库连接,每5-6分钟在docker中断开连接,并自动启动一个新连接。 3次重新连接后,返回以下错误并终止进程

    驱动程序:连接错误

一些尝试

  • 在函数调用期间尝试ping数据库以保持连接 活着-不起作用(在一些简单的情况下有效,但在 情况复杂且不稳定。
  • 尝试使用相同的连接在函数调用期间对数据库执行ping操作 db.SetMaxOpenConns(1)和db.SetMaxIdleConns(1)-不起作用。
  • 尝试使用db.SetConnMaxLifetime()将连接寿命设置为更长- 不起作用。

某些信息

经过一些搜索后,可能的原因是docker会定期检查连接,并在连接持续300秒且未返回响应的情况下使连接超时。无法找到任何方法来覆盖此配置。

https://github.com/moby/moby/issues/36053

https://github.com/docker/for-mac/issues/2442

如何解决此问题?感谢您的帮助。

0 个答案:

没有答案