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

格瑞趨勢技術團隊發表於2023-01-15

背景

客戶凌晨把HIS資料庫遷移到配置更高的新伺服器,上午業務高峰時應用非常緩慢。


現象


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



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


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

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

SQL 專家 雲深度體檢裡有相 應的 ,SQL Ser ver在 線的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'

    分析

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


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

    解決

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




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


    其它情況


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




    來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70023658/viewspace-2927653/,如需轉載,請註明出處,否則將追究法律責任。

    相關文章