版本6.4.4:MySQL的淨連接池connection.Open()很慢
使用的MySqlConnection的最基本的實現,下面的代碼預裝連接池到達時,需要每個連接2-5秒在我的連接字符串中配置「最小池大小」。
任何想法爲什麼需要這麼長時間,如何解決或變通方法?
連接字符串:
<add name="users" connectionString="server=192.168.1.2;User Id=dbuser;password=dbpassword;database=users;Pooling=true;Min Pool Size=10;Max Pool Size=50;Persist Security Info=True;" />
代碼
private static void MySqlConnectionTester()
{
string connectionString = ConfigurationManager.ConnectionStrings["users"].ConnectionString;
using (var connection = new MySqlConnection(connectionString))
{
using (var command = connection.CreateCommand())
{
command.CommandText = "select * from users;";
try
{
connection.Open(); // This line hangs until "Min Pool Size" is reached.
using (var reader = command.ExecuteReader())
{
while(reader.Read())
{
// Read results
}
}
}
catch(Exception ex)
{
// Log exception
}
finally
{
connection.Close();
}
}
}
}
我知道你在談論的信息。他們的建議是不創建自己的MySqlConnection()對象,而是使用MySqlConnection(connectionString)重載。池由不同的連接字符串管理。 – TexasViking 2011-12-29 04:33:26
@TexasViking你認爲它是服務器/網絡是bootleneck而不是連接器嗎? – aweis 2011-12-29 13:52:22
我已經考慮過了。我打算今天在本地安裝mysql來測試這個理論。但是,當我刪除「自定義」連接字符串池設置時,我幾乎可以立即創建連接。 – TexasViking 2011-12-29 15:50:16