сначала все работает нормально. Я запускаю программу со 100 потоками, каждая из которых устанавливает соединение с базой данных. Через некоторое время я получаю следующее сообщение об ошибке:
"невозможно подключиться к любому из указанных узлов mysql" (Inner Exception: Connection Timed Out)
Сервер MySQL работает на Windows-машине (Win Server 2012).
Я установил лимит соединения mySql равным 10k, но проблема все еще возникает
using (MySqlConnection mConnection = new MySqlConnection(connectionString))
{
mConnection.Open();
using (MySqlCommand myCmd = new MySqlCommand("XXX"))
{
myCmd.CommandType = CommandType.Text;
// DO STUFF HERE
myCmd.Connection.Dispose();
}
mConnection.Close();
mConnection.Dispose();
}
Возможно, это решит вашу проблему:
using (MySqlConnection mConnection = new MySqlConnection(connectionString))
{
using (MySqlCommand myCmd = mConnection.CreateCommand())
{
mConnection.Open();
myCmd.CommandTimeout = 60;
myCmd.CommandType = CommandType.Text;
myCmd.CommandText = "XXX";
using (var reader = cmd.ExecuteReader())
{
while (reader.Read())
{
// DO STUFF HERE
}
}
}
}
Вы можете установить значение таймаута по своему усмотрению (будьте осторожны, потому что тайм-аут находится в секундах не миллисекунды).
Вам также не нужно использовать .Close()
и .Dispose()
если вы используете using() {... }
.
Изменить: обновить ответ в соответствии с комментариями ниже.