【问题标题】:Safely keeping MySQL connections alive安全地保持 MySQL 连接处于活动状态
【发布时间】:2014-06-17 10:11:14
【问题描述】:

我正在开发一个连接到 MySQL 服务器的 node.js 应用程序。不过,以下内容可能不是特定于 node.js 的。

目前,我的代码在应用程序启动时初始化 MySQL 连接,然后每次需要进行查询时都会使用该连接。

我的方法面临的问题是连接往往会在一段时间后关闭。我不确定那段时间有多长,但似乎至少有几个小时。我也不确定是否是由于不活动造成的。

无论如何,我想知道长期管理 MySQL 连接的更好方法是什么。在可能的方法中,我考虑过:

  • 只需在每次查询之前检查连接是否仍然有效。如果没有,请在执行查询之前重新连接。

  • 池化 MySQL 连接。这对于一个相当小的应用程序来说会不会过大?

  • 定期(每隔一小时左右)执行一次查询,以防由于不活动而发生这种情况。但是,这并不能纠正可能不是由于不活动引起的情况。

  • 在查询之前/之后连接和断开连接。由于涉及开销,这是个坏主意。

如您所想,我倾向于使用前两个选项之一。哪个选项最可靠和最有效?

【问题讨论】:

  • 池化不是“矫枉过正”。用它。别人写的(万岁!有几个节点实现),它只是工作,而不需要担心实际的连接管理(例如“保持连接活跃”),而不是“释放到池”。

标签: mysql connection-timeout


【解决方案1】:

Node.js 的最佳实践似乎是使用连接池。见Node.js MySQL Needing Persistent Connection

空闲连接的默认超时时间为 28800 秒,可通过 wait_timeout 变量进行配置。见http://dev.mysql.com/doc/refman/5.6/en/server-system-variables.html#sysvar_wait_timeout

【讨论】:

  • 谢谢!汇集它。
  • 如何为 Django 驱动的应用程序实现这一点?有什么想法吗?
  • @farzi_engineer,滚动到本页顶部。查看带有“搜索...”一词的字段 在字段中键入 django 连接池。按回车。出现了一些关于 Django 和连接池的过去问题。阅读它们。
猜你喜欢
  • 2013-03-20
  • 2012-01-03
  • 2021-09-13
  • 2013-08-27
  • 2019-09-01
  • 1970-01-01
  • 2019-12-28
  • 2013-01-27
相关资源
最近更新 更多