代码之家  ›  专栏  ›  技术社区  ›  Manoj Talreja

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

  •  0
  • Manoj Talreja  · 技术社区  · 14 年前

    我不知道该从哪里看,基本上,当我们的站点正常运行时,线程数大约是150个线程,但是在一天中的特定时间(1:30到2:30),它有270个线程。没有额外的sql事务继续进行,一切都和以前一样正常,但是线程数增长,sql开始的行为非常缓慢。

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

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

    3 回复  |  直到 14 年前
        1
  •  5
  •   Remus Rusanu    14 年前

    阻塞语句窃取工人( sys.dm_os_workers max worker threads 默认情况下是开箱即用的。所以看到270个“线程”不是问题,完全在正常的功能参数范围内。你真正的问题一定是封锁,你必须相应地调查:谁在封锁谁,为什么封锁。我敢打赌,您有一个运行在1:30到2:30之间的作业,它正在锁定数据库的大部分(可能是一个删除作业?)你的查询阻塞在锁定的行上。你必须调查,找出根本原因,并采取相应的行动。重新启动不是一个解决方案,也不是责怪不相关的组件(线程计数)。使用 Activity Monitor ,使用 Who Is Active ,遵循 Waits and Queues 方法论。有很多方法可以识别 真实的 从未 doesn't work like that .

        2
  •  1
  •   Subhash    14 年前

    可以使用MAXDOP查询提示控制视差的程度。有关更多详细信息,请查看本文:

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

        3
  •  0
  •   Manoj Talreja    14 年前

    感谢您宝贵的反馈,是的,这是真的,没有什么是sql的行为异常,这是我们的网站是基于Ektron CMS负责的,Ektron CMS的功能之一(这是网页生成器),而做这一块内容的操作是持有的表很糟糕,我们有大约1000万用户访问我们的站点,而且可能是因为这阻塞了表,所以SQL Server变得疯狂,响应不太好。

    我们终于解决了这个问题。