我有一个WCF Web服务,可以满足来自不同客户端的同时请求。该服务必须在每个请求上与mysql Db通信。我面临的问题是大量请求同时进入(大约300-400)并且在与MySQL通信时“无法连接到任何指定的MySQL主机”弹出。 到目前为止我已经想到的是,Mysql无法管理如此多的同时连接并且无法再提供任何连接并开始抛出错误。解决这个问题的最佳方法是什么? 以下是每次请求进入时调用的代码段:
try
{
MySqlCommand command = new MySqlCommand(query);
command.Connection = conn;
conn.Open();
long id = -1;
int _result = command.ExecuteNonQuery();
if (_result == 1)
{
//do something
}
conn.Close();
return id;
}
catch (Exception ex)
{
throw ex;
}
finally
{
if (conn.State != ConnectionState.Closed)
{
conn.Close();
}
}
答案 0 :(得分:2)
“//做某事”需要多长时间?如果它很短,我看不到你可以做的很多 加快代码速度。如果它很长,请考虑在执行任何操作之前关闭连接(可能是错误处理)。
(作为旁注,你应该尝试使用using语句而不是try / catch块来关闭连接。
编辑:另外,正如SLaks所说,“扔;”会做“扔前”的事情除了它将保留堆栈跟踪,这就是为什么你不应该有“ex;”在那里,但如果你用它替换它,这一点是没有意义的。