当前位置: 首页 > 面试题库 >

在Go中关闭应用程序之前是否需要关闭数据库连接?

娄振
2023-03-14
问题内容

在Go中,当使用SQL数据库时,是否需要db.Close在关闭应用程序之前关闭DB()?数据库是否会自动检测到连接已终止?


问题答案:

DB将尽其所能进行检测,但是如果没有运气,它可能无法检测到。最好尽快发布所获得的东西。

send() 系统调用将等待TCP连接发送数据,但客户端不会收到任何信息。

  1. 发生电源故障,网络问题或裸机退出而没有正确释放资源。TCP keepalive机制将启动,并尝试检测连接已死。

  2. 客户端已暂停,并且未收到任何数据,在这种情况下,send()它将被阻止。

结果,它可能会阻止

  1. 正常关闭集群。
  2. 如果事件持有事务处理中的排他锁(例如auto vacuum在postgresql中),则提高事件范围。

服务器keepalive配置可以缩短以更早地检测到它。(例如,~2h 12m根据工作量,postgresql中的默认值将很长)。

最大打开连接数可能会有硬性限制,直到检测到之前,有些连接会变成僵尸(存在,无法使用,但会降低限制)。



 类似资料:
  • 问题内容: 假定以下代码,其中“ sock”是TCP套接字的句柄,该句柄先前已使用epfd指定的epoll文件描述符注册。 如果套接字无论如何都要随后关闭,是否仍然需要调用epoll_ctl?还是由于关闭套接字而隐式注销了套接字? 问题答案: 从手册页: Q6 关闭文件描述符会导致它自动从所有epoll集中删除吗? A6 是,但是请注意以下几点。文件描述符是对打开的文件描述的引用(请参阅(2))。

  • 问题内容: 我想知道,在关闭阅读器之后,是否需要关闭InputStream? 问题答案: 不,您不必。 由于Java中用于流的装饰器方法可以通过将新流或读取器附加到其他流上来构建新流或读取器,因此实现将自动对其进行处理。 如果查看其来源,则会看到: 因此,关闭操作实际上关闭了底层的流读取器。 编辑:我想确保关闭也可以在输入流上工作,请继续关注。 签入 在调用sd的close时调用。

  • 问题内容: 我有些困惑,我从阅读以下内容 你不需要关闭conn连接吗?如果conn.close()没有发生,那实际上是怎么回事? 我有一个正在维护的私有Web应用程序,该应用程序当前无法关闭任何一种形式,但是重要的应用程序真的是stmt,conn还是两者兼而有之? 该站点间歇性地关闭,但是服务器一直在说这是数据库连接问题,我怀疑它没有关闭,但是我不知道该关闭哪个。 问题答案: 使用完之后,你需要通

  • 我浏览了所有的文档和这么多的博客,但没有得到答案。 问题是我有100个同时连接到Firebase实时数据库的初始免费配额。这意味着一次我的100个用户可以使用我的应用程序。使用应用程序后,除非用户不应用程序,否则仍然对该用户开放,因此同时没有其他用户可以访问。 所以我的问题是,如果我从数据库参考中删除侦听器,这也会关闭吗? 有了这个,我想实现的是,当User1得到他的搜索结果时,他/她将不再持有,

  • 我读过很多帖子,人们说在java、语句等中关闭连接,但我没有找到我的问题的答案。 我问我不做Con.close(),但我做所以它会关闭连接或不? 所以我只想知道,当我们关闭结果集时,连接是否会关闭?

  • 问题内容: 我有一个使用简单套接字在两个系统之间传递某些字符的应用程序。我的Java应用程序作为服务器运行。我建立了良好的连接,甚至传递了一条消息。但是,发送完一条消息后,我的连接关闭。 从我可以看出来的好像是在关闭时,套接字本身正在关闭吗?!这很不好,因为我有多个要在同一连接上发送的消息。 我吃饱了吗?如何在Java中维护此连接? 问题答案: 是的,关闭任何作家/读者将关闭他们包装的所有其他作家