在Go中,当使用SQL数据库时,是否需要db.Close在关闭应用程序之前关闭DB()?DB会自动检测到连接已经死亡吗?
DB会尽力检测,但如果运气不好,它可能无法检测到。获得的东西最好尽快释放。
send()系统调用将等待 TCP 连接发送数据,但客户端不会收到任何内容。
发生断电、网络问题或裸退出而没有正确释放资源。TCP keepalive 机制将启动并尝试检测连接是否已断开。
客户端暂停并且不接收任何数据,在这种情况下send()将阻塞。
结果,它可能会阻止
auto vacuum在 postgresql 中),则推进事件范围。可以缩短服务器保活配置以更早地检测到它。(例如,~2h 12m根据工作负载,postgresql中默认会很长)。
最大打开连接数可能有硬性限制,直到检测到,某些连接将成为僵尸(在那里,不可用但减少限制)。