mysql - 当打开的连接过多时如何使 mysqlconnection 等待

标签 mysql sql vb.net max database-connection

我将 Max Pool Size=50 添加到连接字符串中。这似乎没有帮助。

我收到一个错误 dreamhost2.vshost.exe 错误:0:用户 gensurv_general 已拥有超过“max_user_connections”的事件连接

基本上我只想等到连接数可以管理。

我的程序是这样的

For i = 0 To 2000000 Step 10
    Dim j = i
    Threading.ThreadPool.QueueUserWorkItem(
        Sub()
            Using connect1 As New MySqlConnection(ConnectLocalhost.serverString)
                connect1.Open()

                Dim cmd = New MySqlCommand("set net_write_timeout=99999; set net_read_timeout=99999", connect1) ' // Setting tiimeout on mysqlServer
                cmd.ExecuteNonQuery()

                Dim BusinessReader = selectSomeQuery("Select * from tablebusiness limit " + j.ToString + "," + 10.ToString + "", connect1)

最佳答案

问题显然不在于最大池大小。相反,您将最大池大小值设置太高

同时连接数有两个限制:

  1. 应用程序中的最大池大小。一旦存在指定数量的事件连接,任何打开连接的新尝试都必须等待,直到某些连接返回到池中。因此,这并不意味着您的客户会收到错误,这只是意味着您只能同时为不超过 50 个客户提供服务,其余客户将不得不等待。
  2. 数据库中的最大用户连接数。一旦达到指定数量的事件连接,数据库将拒绝接受任何进一步的连接(发出您收到的错误)。

基本上,最大池大小永远不应该超过 max_user_connections 限制(当然,如果您有 10 个应用程序同时运行并使用相同的数据库,则不仅是每个应用程序的最大池大小,还包括总和所有应用程序的最大池大小也不应超过 max_user_connections 限制)。

您可以增加最大池大小,以使应用程序在高并发负载下表现更好,但一旦将其设置得太高,max_user_connections 将耗尽,您将开始收到这些错误消息。

关于mysql - 当打开的连接过多时如何使 mysqlconnection 等待,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11292621/

相关文章:

php - 如何从数据库构建 "child-parent"树/嵌套数组?

php - 在列中查找子字符串的 MySQL 查询?

mysql - SQL使用不同的返回重复记录

VB.NET 如果我想锁定多个东西,我是否需要多个 SyncLocks?

vb.net - 使用 DataGridViewCheckBoxCell 时要检查的最佳事件

php - 第二阶段SQL注入(inject)

php - Laravel 5.4 在数据透视表中插入时调用 null 上的成员函数 Attach()

MySQL 静默安装(使用 NSIS)无法正常工作

sql - 将 SQL 选择拆分为多个查询是否更快?

c# - 存储要在 Azure 角色之间共享的静态文件