gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 14:24:15 26 4
gpt4 key购买 nike

我将 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com