Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/31.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net SQL server超时问题_Asp.net_Sql Server_Asp Classic - Fatal编程技术网

Asp.net SQL server超时问题

Asp.net SQL server超时问题,asp.net,sql-server,asp-classic,Asp.net,Sql Server,Asp Classic,可能重复: 您好,我的应用程序是在经典asp上开发的,但在.net上迁移应用程序时也使用asp.net。它使用SQL server作为数据库,并托管在Windows server 2003上 现在的问题是,应用程序在很长一段时间内仍能正常工作,但过了一段时间,SQL server出现超时错误,它可以满足任何请求。即使重新启动SQL server甚至IIS,它也无法得到修复,最终每次都必须重新启动服务器,这只能解决问题 知道是什么导致了这个问题吗?只是粗略地说一下,这个网站在高峰期有大约300人

可能重复:

您好,我的应用程序是在经典asp上开发的,但在.net上迁移应用程序时也使用asp.net。它使用SQL server作为数据库,并托管在Windows server 2003上

现在的问题是,应用程序在很长一段时间内仍能正常工作,但过了一段时间,SQL server出现超时错误,它可以满足任何请求。即使重新启动SQL server甚至IIS,它也无法得到修复,最终每次都必须重新启动服务器,这只能解决问题

知道是什么导致了这个问题吗?只是粗略地说一下,这个网站在高峰期有大约300人使用

知道是什么导致了这个问题吗?只是粗略地说一下,这个网站在高峰期有大约300人使用。我肯定会关闭所有地方的连接,我在每个页面上的结束代码都会关闭连接。如果在结束页之前发生错误,expection处理程序将关闭连接。因此,我确信关闭连接不是问题。如果我看到sql日志,就没有打开的连接。我们的服务器只有一个盒子,有SQL server、IIS、iMail(我们的邮件服务器)。在我重新启动SQL Server之后,它并没有解决问题。只有重新启动Windows服务器,它才起作用。从perfom来看,IO使用率相当高。有什么建议吗


谢谢,wildanjel

您使用的是SQL 2000/2005/2008吗

添加.NET代码后是否开始出现此问题


当我第一次开始使用ASP.NET和SQL Server时,我遇到了一件事,那就是确保我关闭并处理了我正在使用的所有数据读取器。

要做的主要事情是确保关闭并处理ADO.NET中的连接。出现问题的一种可能是,在使用连接后,您没有断开连接。与传统ASP不同,您应该尽可能晚地打开连接,并尽快关闭连接。最好的方法是使用C#中的Using语法。例如:

using (SqlConnection conn = new SqlConnection(Settings.ConnectionString))
{
    using (SqlCommand cmd = new SqlCommand("dbo.UpdateHits", conn))
    {
        cmd.CommandType = CommandType.StoredProcedure;
        cmd.Parameters.Add(new SqlParameter("@PageID", SqlDbType.Int)).Value = 1;

        conn.Open();
        cmd.ExecuteNonQuery();

    }
}

Using命令确保连接被关闭和释放,即使抛出异常也是如此。命令对象也是如此。

是否在连接字符串中使用连接池

如果你不是,看看这个。您需要使用连接池,因为即使在关闭连接时,端口仍在使用4分钟,并且可能会耗尽端口,这就是为什么在高峰时间会出现这种情况


如果您的错误是传输级错误,则会出现这种情况。

从服务器重新启动到超时开始需要多长时间?