首頁 > 軟體

SQL SERVER資料庫伺服器CPU不能全部利用原因解析

2022-09-02 18:02:57

背景

客戶凌晨把HIS資料庫遷移到設定更高的新伺服器,上午業務高峰時應用非常緩慢,嚴重影響到業務執行。

1.現象

通過SQL專家雲實時視覺化介面看到大量的綠點,綠點表示對談在等待某項資源,綠點越大說明等待的對談數越多。

進入活動對談列表,發現大量對談的狀態為runnable,runnable代表這個對談可以執行,但沒有 CPU 可以分配給它,可以理解為正在等待 CPU 這項系統資源。

但是此時伺服器的CPU利用率並不高,在30%左右。

從工作管理員裡檢視,伺服器有128核心,但是絕大多數核心根本利用不上。

 SQL專家雲深度體檢裡有相應的診斷,SQL Server線上的CPU核數40小於檢測到的CPU核數128,說明SQL Server只使用了40個核心。

沒有SQL專家雲,可以使用下面的語句查詢。

--CPU總數
SELECT
  cpu_count
FROM
  sys.dm_os_sys_info

--線上CPU數
SELECT
  COUNT(*)
FROM
  sys.dm_os_schedulers
WHERE
  is_online = 1
  AND status = 'VISIBLE ONLINE'

2.分析

從SQL Server 2012開始,企業版有兩種許可證模式,基於核心和基於伺服器+CAL。基於伺服器+CAL許可證限制SQL Server最多能使用20個物理處理器,如果超執行緒已啟用,這將是40個邏輯處理器。

確認資料庫的版本為SQL server 2012 Enterprise Edition,也就是伺服器+CAL許可證模式。

3.解決

在SQL Server安裝檔案中更換序列號,升級到基於核心的許可模式。

重啟SQL Server服務後,在SQL專家雲中確認已經是基於核心的許可證模式了,並且能用使用到128個核心。

4.其它情況

如下圖,在為虛擬機器器分配CPU時,設定了16個插槽,每個插槽核心數為1,這樣SQL Server標準版只能使用到4個CPU。應該合理的設定,例如2和8或者4和4。

到此這篇關於SQL SERVER資料庫伺服器CPU不能全部利用原因解析的文章就介紹到這了,更多相關SQL SERVER 內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com