连接超时VS IIS

时间:2011-06-28 21:26:42

标签: c# mysql

我在错误日志中遇到此异常..

  

之前经过的超时时间   从池中获取连接。

重新启动IIS会让我重新登录我的应用程序..那么您认为问题出在哪里?它是在IIS属性设置中吗?

代码是这样的:

MySqlConnection connection = null;
try
{
    connection = MySqlConnectionHandler.OpenConnection();
    string strText =string.Empty;
    strText = "<<sql statement>>";
    using (MySqlCommand cmd = new MySqlCommand(strText, connection))
    {
        cmd.Parameters.Add(new MySqlParameter("ID", MySqlDbType.Int32));
        cmd.Parameters["ID"].Value = 100;

        cmd.ExecuteNonQuery();
    }
}
finally
{
    MySqlConnectionHandler.CloseConnection(connection);
}

我的CloseConnection方法内部有

if (con != null)
{
    con.Close();
    con.Dispose();
}

2 个答案:

答案 0 :(得分:2)

这几乎总意味着你没有在你的连接上调用Dispose(),并且你已经使池已经饱和,直到GC运行 - 如果你的应用现在已经死了,它可能不会。从本质上讲,你已经在一段时间内连续打开了连接(没有给它们回复),现在没有了。解决方案:完成后将它们带回池中。

每当您使用类似连接的内容时,请使用using语句或其他一些机制来确保在完成连接后立即处理它。这同样适用于任何IDisposable,但连接特别容易受此影响。

答案 1 :(得分:1)

因为你说你确实调用了Dispose()......

我会尝试两件事。 暂时增加连接超时以查看是否存在问题:

MySqlCommand.CommandTimeout = 45; //in seconds

这会降低您的应用程序速度,因此您只应将其用于故障排除。如果是,则需要优化SQL查询。

或者,您的connection pool可能会被超出,因此您可能需要将其提升。