我完全被这个难住了。我们在这里运行一个非常普通的 Intranet 应用程序,经典的 ASP 前端和 SQL Server 2005 后端。有时,每周一次/两次,当我在 Management Studio 中运行某个存储过程时,它的运行时间要长约 50 倍。这种缓慢持续了一整天,第二天莫名其妙地消失了。
所以基本上发生的事情是这样的:每周一次/两次,当我启动运行存储过程并显示结果的 Intranet 页面时,运行大约需要 115 秒。然后我启动 SQL Server Management Studio 并运行相同的查询,这一次只需要 3-4 秒即可运行。
第二天,Intranet 页面的运行时间与 SSMS 一样长,运行相同的存储过程,在此期间没有任何更改(无论如何我都不知道)。
其他详情:
- IIS 使用Provider=sqloledb作为驱动程序连接到 SQL Server 2005
- 无论活跃用户数量如何,减速都会持续一整天
- 我可以通过使用相同的驱动程序/连接字符串从 Excel 运行相同的查询来复制缓慢
- 我在 SQL 服务器上运行了一个跟踪,结果发现在那些特别慢的日子里,通过 IIS 执行存储过程的持续时间实际上比直接查询长
因此,我想知道你们中是否有人遇到过任何类似的行为,如果您喜欢它的解决方案,您对解决/解决它有什么建议?
谢谢你的帮助,
请在下面找到 .csv 格式的跟踪结果:
EventClass,TextData,ApplicationName,CPU,Reads,Writes,Duration (s),ClientProcessID,SPID,StartTime,EndTime
12,exec spStubbornProc,Internet Information Services,"106,016","7,059,999",1,115.80,5476,85,18/04/2013 08:17:15,18/04/2013 08:19:11
12,exec dbo.spStubbornProc,Microsoft SQL Server Management Studio - Query,"3,141","146,051",0,3.40,5876,84,18/04/2013 08:20:45,18/04/2013 08:20:48
12,exec dbo.spStubbornProc,Microsoft SQL Server Management Studio - Query,"2,563","147,387",0,2.93,5876,84,18/04/2013 08:21:04,18/04/2013 08:21:07
12,exec spStubbornProc,Internet Information Services,"103,156","7,083,365",7,118.73,5476,80,18/04/2013 09:39:41,18/04/2013 09:41:40
12,exec dbo.spStubbornProc,Microsoft SQL Server Management Studio - Query,"2,406","175,029",1,2.57,5876,84,18/04/2013 10:08:58,18/04/2013 10:09:01
12,exec spStubbornProc,Internet Information Services,"112,218","7,103,267",7,114.72,5476,75,18/04/2013 14:06:26,18/04/2013 14:08:21
12,exec spStubbornProc,Internet Information Services,"93,515","7,101,229",3,93.60,6092,60,18/04/2013 19:37:02,18/04/2013 19:38:35
12,exec spStubbornProc,Internet Information Services,"2,500","148,775",1,3.42,5160,75,19/04/2013 09:16:01,19/04/2013 09:16:04