连接超时VS IIS

本文关键字:IIS VS 超时 连接 | 更新日期: 2023-09-27 18:00:33

我在错误日志中得到了这个异常。。

在从池中获取连接。

重新启动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();
}

连接超时VS IIS

这几乎总是意味着你不会在连接上调用Dispose(),并且你已经饱和了池,直到GC运行为止——如果你的应用程序现在已经死了,可能就不会了。从本质上讲,你已经在一段时间内连续打开了连接(从未归还),现在已经一个也没有了。解决方案:当你完成后,把它们还给游泳池。

无论何时使用连接之类的东西,都要使用using语句或其他机制,以确保在使用完它后立即处理它。这同样适用于任何IDisposable,但连接特别容易受到这种影响。

既然你说你确实调用了Dispose()。。。

我会尝试两件事暂时增加连接超时,看看是否有问题:

MySqlCommand.CommandTimeout = 45; //in seconds

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

或者,您的连接池可能会被超出,因此您可能需要增加连接池。