0

Max Pool Size=50 を接続文字列に追加しました。これは役に立たないようです。

エラーdreamhost2.vshost.exe Error: 0 : User gensurv_general has more than 'max_user_connections' active 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)
4

1 に答える 1

1

問題は明らかに最大プール サイズではありません。逆に、最大プール サイズの値が高すぎます。

同時接続数には 2 つの制限があります。

  1. アプリケーションの最大プール サイズ。アクティブな接続が指定された数になると、接続を開こうとする新しい試みは、一部の接続がプールに返されるまで待機する必要があります。したがって、これはクライアントがエラーを受け取るという意味ではありません。これは、同時に 50 を超えるクライアントにサービスを提供できず、残りは待機する必要があることを意味するだけです。
  2. DB の max_user_connections。指定された数のアクティブな接続があると、DB はそれ以上の接続の受け入れを拒否します (受け取ったエラーを発行します)。

基本的に、最大プール サイズは max_user_connections の制限を超えてはなりません(もちろん、たとえば 10 個のアプリケーションが同時に実行され、同じ DB を使用している場合、各アプリケーションの最大プール サイズだけでなく、すべてのアプリケーションの最大プール サイズの合計も超えてはなりません)。 max_user_connections 制限も)。

最大プール サイズを増やして、同時負荷が大きい場合にアプリケーションのパフォーマンスを向上させることができますが、設定が大きすぎると、max_user_connections が使い果たされ、これらのエラー メッセージが表示されるようになります。

于 2012-07-02T11:23:08.237 に答える