如何确保使用 go-xorm 的应用程序可以处理断开连接并在发生断开连接时自动重新连接到 TiDB 数据库

【TiDB 使用环境】生产环境 【TiDB 版本】v5.0.1 【复现路径】

  1. 连接到TiDB数据库。
  2. 执行一系列查询和更新操作。
  3. 断开数据库连接。
  4. 等待一段时间后重新连接到数据库。

【遇到的问题:问题现象及影响】 在进行复现路径中的步骤时,出现了数据库连接断开的情况。这导致后续的查询和更新操作失败,对应用程序的功能和性能产生了影响。

【资源配置】 TiDB Dashboard - 集群信息 (Cluster Info) - 主机(Hosts) 页面截图如下:

是指这个 ORM 么?

建议查询一下他们的官方文档,

根据情况调整参数
Engine provides DB connections pool settings.

Use engine.SetMaxIdleConns() to set idle connections.
Use engine.SetMaxOpenConns() to set Max connections. This methods support only Go 1.2+.
Use engine.SetConnMaxLifetime() to set Max life time. This methods support only Go 1.6+.
1 个赞

也找找官方文档会有惊吓

设置数据库连接池:在创建数据库引擎时,使用 SetMaxIdleConns 和 SetMaxOpenConns 方法设置连接池的最大空闲连接数和最大打开连接数,以适应应用程序的并发需求。

在程序运行时,可以使用 xorm.Engine 的 Ping() 方法检测连接状态,如果连接已经断开,则可以通过重新连接来恢复连接。可以使用一个定时任务来定期执行 Ping() 操作,以确保连接的可用性

此话题已在最后回复的 60 天后被自动关闭。不再允许新回复。