间歇性SQL超时

时间:2010-02-22 21:50:45

标签: sql-server-2005 timeout

几天前,支持我们网站的SQL服务器(Microsoft SQL Server 2005)偶尔开始计时。它大约每隔一两个小时就会发生在看似随机的时间。通常需要大约10分钟,在此期间我们会看到数百个计时请求。在正常情况下,我们的大多数查询都需要不到50毫秒。一个需要很长时间的查询是一个例外。

我已经有效地杀了一天,试图找出至少没有任何实际进展的东西。通常,服务器负载大约为10-20%,当超时发生时,我们看不到任何增加的CPU负载。此外,在超时期间没有什么特别的事情发生;没有过于热心的网络爬虫,没有繁重的后台任务,没有增加的网络流量,没有增加连接数等等。简单地说,一切都像往常一样。

没有取得任何进展,我们决定重新启动它(并安装最新的SP,因为我们在其中)似乎解决了这个问题。它已经超过六个小时没有任何事件。此外,CPU负载已降至10%以下。

似乎SQL服务器“加速”加班。也许,一些内部结构(一些缓存或统计)已经形成并导致偶尔出现问题。我没有任何其他解释。

当我监视服务器时我注意到的唯一一件事(当超时发生时幸运的一次出现),我看到几个长时间运行的查询等待CXPACKET。但我了解到这很可能只是其他问题的结果。我编写了一个监视SQL请求的脚本,希望下次发生时,我会得到更多信息。

有没有人有类似的经历?我不是SQL Server的大师。欢迎任何建议。

1 个答案:

答案 0 :(得分:2)

因为一切看起来都很正常:CPU,没有什么特别的事情发生,没有过于热心的网络爬虫,没有繁重的后台任务,没有增加网络流量,没有增加连接数等等。我会研究锁定\阻塞\竞争条件。使用它来查看发生超时时锁定的内容(如果有的话):

How to find out what SQL queries are being blocked and what's blocking them?