【问题标题】:SQL server timeoutSQL 服务器超时
【发布时间】:2009-08-19 16:38:25
【问题描述】:

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

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

知道可能导致问题的原因吗?粗略地说,该网站在高峰时段有大约 300 人使用。

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

谢谢,

【问题讨论】:

    标签: asp.net sql-server asp-classic


    【解决方案1】:

    至少,一旦您在代码中使用完数据库连接,您是否会关闭它?另外,您的连接字符串如何?它使用连接池吗?

    编辑:我看到了你的 cmets。是否有待提交的交易?

    【讨论】:

      【解决方案2】:

      听起来很像是存在某种您没有正确清理的非托管资源。我们没有足够的信息来确切地知道该资源可能是什么,所以我们只能猜测。

      我的第一直觉是数据库连接,但如果是这种情况,重新启动 sql server 应该可以修复它。列表中的下一个是文件句柄和线程,因此,如果您执行任何多线程工作或额外的文件 io,那将是值得一看的。请记住,在 ASP.Net 中,using 语句(不是指令)是您的朋友。

      【讨论】:

        【解决方案3】:

        首先,您需要与您的 DBA 交谈...他们可以检查打开的连接数、表锁、运行缓慢的查询等。

        我的直觉反应是你没有在某个地方关闭你的连接,或者你的连接池太低了。

        【讨论】:

          【解决方案4】:

          您是否定期进行数据库维护?重建/整理索引,重新计算统计信息(除非它设置为自动执行此操作)。检查事务日志的大小等。

          【讨论】:

            猜你喜欢
            • 2011-06-24
            • 2011-05-17
            • 1970-01-01
            • 2011-01-06
            • 2016-02-29
            • 1970-01-01
            • 2021-12-27
            • 2019-01-20
            • 1970-01-01
            相关资源
            最近更新 更多