2012-07-02 4 views
0

Я добавил Max Pool Size = 50 в строку подключения. Это, похоже, не помогает.Как заставить mysqlconnection ждать, когда слишком много соединений открыто

я получил ошибку 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

Проблема, очевидно, не с максимальным размером пула. Наоборот, вы установили максимальное значение размера пула слишком высокое.

Есть два ограничения на одновременное числа соединений:

  1. Максимальный размер пула в вашем приложении. После того, как будет указано количество активных подключений, любая новая попытка открыть соединение должна будет подождать, пока некоторые соединения не будут возвращены в пул. Таким образом, это не означает, что ваши клиенты получат ошибку, это означает, что вы сможете одновременно обслуживать не более 50 клиентов, а остальным придется ждать.
  2. max_user_connections в БД. Как только будет указано количество активных соединений, БД откажется принять любые дополнительные соединения (испустив полученную вами ошибку).

В принципе, максимальный размер пула никогда не должен превышать предел max_user_connections (конечно, если у вас, например, есть 10 приложений, работающих одновременно и с использованием той же БД, а не только максимальный размер пула каждого приложения, но сумму не более размеры пула для всех приложений не должны превышать предел max_user_connections).

Вы можете увеличить максимальный размер пула, чтобы приложение выглядело лучше при сильной одновременной нагрузке, но как только вы установите его слишком высоко, max_user_connections будет исчерпан, и вы начнете получать эти сообщения об ошибках.

+0

Максимальное соединение установлено в 150 –

+0

Также будет просто добавлено Max Pool Size = 50; в строке подключения сделать потоки «wait» –

Смежные вопросы