2010-10-28 109 views
0

在我們的生產服務器上,出於某種原因,在特定的時間內,線程數一直超過某個點,儘管CPU利用率正常(30-50%),但查詢開始運行緩慢,我們有更多的阻塞語句。由於線程數增加,SQL Server運行速度變慢

我不確定在哪裏看它,基本上當我們的網站運行正常時,線程數大約是150個線程,但是在一天中的特定時間(在1:30到2:30)它會出現到270線程。沒有額外的SQL事務繼續進行,一切都如以前一樣正常,但線程數增長,並且SQL開始行爲非常緩慢。

立即重新啓動SQL服務後,線程數恢復正常,並且我們的站點功能還可以繼續使用24小時。

我們使用的是SQL Server 2005,它是24核心機器。

有什麼想法嗎?

回答

4

阻塞聲明竊取工作人員(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

0

感謝您寶貴的意見,是的,這是真的,它是沒有什麼,這是SQL表現有益,它是我們的網站是基於Ektron CMS負責,其中一個功能Ektron CMS(這是PageBuilder) ,雖然在這段內容上操作很糟糕,但我們有大約一千萬用戶訪問我們的網站,並且可能因爲這阻止了表SQL Server發生故障並且響應不佳。

我們終於消除了這個問題。