如何避免 MySQL 中的“连接过多”错误

如何避免 MySQL 中的“连接过多”错误

我经常在尝试从数据库加载数据时收到“连接过多”异常。

我不知道数据库工作的内部特性,所以我不明白什么被认为是连接,什么时候发生断开连接等等。

例如:如果我使用 3 个 TableAdapter。一个用于定期更新用户数据。第二个用于定期(每秒 2-3 次)检查“聊天”表中的新条目,第三个用于定期检查在线用户表。

因此,有时会出现这种情况,当运行的程序副本不多时,但“太多连接”错误仍然存​​在。我想了解一下 - 这是我粗心编程的结果,还是服务器端都存在同样的问题?

答案1

允许多少个同时连接到服务器?也许你应该增加这个值?

还要验证问题是否与循环方法(例如 TableAdapter.Fill)有关。它可能会以服务器无法承受的速度打开和关闭连接。也许服务器无法跟上速度,并让连接保持打开状态更长时间。

看看这个讨论,它可能会有帮助 http://www.sqlservercentral.com/Forums/Topic1619584-2893-1.aspx

您可以使用 DataAdapters 将数据加载到 DataSet 中,而不是 TableAdapter。然后,您可以为 SelectCommand.Connection 指定打开的连接。

答案2

默认价值5.6 有 151 个连接。

做一个:

mysqladmin -u root -p -i 5 extended-status | grep Max_used_connections

当你的工作正在运行时。

如果超出了 Max_used_connections,您可以增加 max_connections 全局变量。或者调查您的代码在做什么。但错误消息不是错误。

相关内容