由于线程数增加,SQL Server运行缓慢

时间:2010-10-28 19:52:45

标签: sql sql-server

在我们的生产服务器上,由于某种原因,在特定的时间内,线程计数会反复到某一点,虽然CPU利用率是正常的(30-50%),但查询开始运行缓慢我们这么多更多阻止声明。

我不知道在哪里查看它,基本上当我们的网站正常运行时,线程数约为150个线程,但在一天中的特定时间(1:30到2:30),它会出现270 threads.There没有额外的sql事务继续,一切正常,但线程计数增长,sql开始表现得非常慢。

重新启动SQL服务后,线程计数立即恢复正常,我们的网站再运行24小时。

我们使用的是SQL Server 2005,它是24核心机器。

任何想法?

3 个答案:

答案 0 :(得分:5)

阻止语句窃取工作者(sys.dm_os_workers),这样服务器就会产生更多的工作来处理传入的任务。在24核心处,默认情况下您将有700 max worker threads个开箱即用。因此,看到270'线程'不是问题,完全在正常的功能参数范围内。你真正的问题必须是阻止,你必须相应地调查它:谁阻止谁和为什么。我敢打赌,你有一个在1:30到2:30之间运行的工作,它锁定了数据库的大部分(可能是一个删除工作?),你的查询阻塞了锁定的行。你必须调查,找到根本原因,并采取相应的行动。重新启动不是解决方案,也不是指责不相关的组件(线程计数)。使用Activity Monitor,使用Who Is Active,遵循Waits and Queues方法的有条理方法。有很多方法可以识别真正的问题。由于线程计数,SQL Server 永远不会显得慢。它只是doesn't work like that

答案 1 :(得分:1)

您可以使用MAXDOP查询提示来控制并行度。有关详细信息,请查看此文章:

http://blog.sqlauthority.com/2010/03/15/sql-server-maxdop-settings-to-limit-query-to-run-on-specific-cpu/

答案 2 :(得分:0)

感谢您的宝贵意见,是的,没有什么是sql的行为,我们的网站基于Ektron CMS负责,Ektron CMS的功能之一(即PageBuilder),虽然对这段内容进行操作非常严重,但我们的网站有大约1000万用户,而且可能因为这会阻止表格,SQL Server会疯狂并且响应不好。

我们终于消除了这个问题。