经典 asp 站点,随机缓慢的数据库连接

经典 asp 站点,随机缓慢的数据库连接

我们正在同时运行一个使用经典 asp 和 ASP.NET MVC 4 (C#) 的网站。在高流量期间,数据库查询在 asp 页面中的运行速度非常慢。同时,在同一个网站中,C# 页面始终正常连接到同一个数据库。两台服务器上的 CPU、内存和网络使用率都正常(强大的硬件/连接)。

该网站多年来一直以相同的设置和流量负载运行,没有任何问题,这种现象大约在一周前开始出现。有人知道哪里出了问题吗?

数据库服务器:SQL Server 2012 Web 版

Web 服务器:Windows Server 2012 IIS 8.0

Connection string:
conn.connectionString = "Provider=SQLNCLI11;Persist Security Info=True;User ID=abc;Password=abc;Initial Catalog=sampledb;Data Source=192.168.10.11"

iis 服务器日志中的示例加载时间(毫秒):

2015-09-05 18:00:07  23642  /page.asp
2015-09-05 18:00:07  13547  /page.asp
2015-09-05 18:00:07  93     /ASP.NET
2015-09-05 18:00:07  11172  /page.asp
2015-09-05 18:00:07  78     /ASP.NET
2015-09-05 18:00:07  578    /ASP.NET
2015-09-05 18:00:07  10828  /page.asp
2015-09-05 18:00:07  32252  /page.asp
2015-09-05 18:00:07  13641  /page.asp

有时,asp 页面使用数字更合适:

2015-09-05 18:07:30  218    /page.asp
2015-09-05 18:07:30  3281   /page.asp
2015-09-05 18:07:30  46     /page.asp
2015-09-05 18:07:30  2375   /page.asp
2015-09-05 18:07:30  78     /page.asp
2015-09-05 18:07:30  46     /ASP.NET
2015-09-05 18:07:30  203    /ASP.NET
2015-09-05 18:07:30  2906   /page.asp
2015-09-05 18:07:30  1781   /page.asp

Asp 查询通常很慢,但有时我们会收到错误:

Microsoft SQL Server Native Client 11.0 error '80040e31'
Query timeout expired

测试 .asp 页面运行六个相同的 SQL 查询,页面总加载时间(以秒为单位)。一个查询耗时 13 秒,其他查询几乎是即时的。下次运行另一个查询时,运行速度很慢,有时它们都很快。

Query 1: 0
Query 2: 0,3554688
Query 3: 0,375
Query 4: 13,32813
Query 5: 13,32813
Query 6: 13,32813

答案1

在您的 Web 服务器(或同一网络中的另一台 PC)上安装 SQL Server Management Studio 并运行您的应用程序正在运行的一些查询。

启用您的客户统计信息。这些可能会告诉您发生了什么。

在此处输入图片描述

运行的次数越多,它收集并显示的统计数据就越多

在此处输入图片描述

答案2

“CPU、内存和网络使用情况正常”——对于数据库来说,它们绝对不相关。

嗯,不是完全如此,但你基本上是说“我的车跑得不够快,而且刹车灯在工作”。

重点是:数据库的存亡取决于 IO 容量。这部分由内存处理(存储在内存中的数据不能从磁盘访问)。锁定时间至关重要 - 这意味着索引之类的东西。

我很确定如果你检查磁盘 IO 的标记(唯一相关的是 ms/per 请求),你会发现它们已经超出了上限,并且磁盘子系统正在疯狂运行。

如果不是,则说明您的事务处理不当,并且锁定了一个查询,从而阻止了其他查询。使用 SSMS 和 SQL Server 的性能数据仓库功能开始分析。

找到您的慢速查询并修复它们。

相关内容