分析思路

重點從集羣任務、系統資源、集羣狀態及變量三方面進行分析。

1、集羣任務分析:

重點對併發任務數較高、資源使用率較高的集羣進行分析;

定期抽取集羣任務趨勢數據、審計日誌,分析任務數趨勢、重點觀察高併發任務數時點及趨勢,分析不同類型/用户等維度的任務分佈情況、任務總體的耗時情況;

定期對TOP任務(超時SQL、大SQL)進行分析優化;

不定期對特定應用、用户反饋的腳本等進行專項分析優化;

主要分析內容包括:

1)任務趨勢分析

2)任務分類統計分析

3)TOP任務分析

4)專項任務分析

集羣任務數趨勢可通過集羣監控系統獲取,SQL任務統計數據通過審計日誌獲取,需要部署相關的監控及設置審計日誌歸檔,此處不冗述。

2、系統資源分析:

部署nmon監控,定期抽取集羣節點的nmon日誌,重點觀察CPU使用率趨勢、磁盤Disk Busy趨勢、Swap使用率趨勢,看是否存在瓶頸。

3、集羣狀態及變量分析:

定期分析,重點觀察集羣線程數、堆內存使用率的趨勢,針對性優化。

分析總結

分析結束後,需要輸出集羣優化分析記錄,主要內容包括:集羣應用場景、集羣任務併發情況、集羣任務耗時情況、系統資源使用情況、集羣優化舉措,舉例如下:

1、集羣業務及資源使用情況

6點至14點集羣較活躍,9點至12點任務數較大,約在100至150之間,少數時點會超過150接近180,其他時段任務數基本在50以下;

SELECT任務佔大頭,全天約700萬,其次是insert(66萬)和delete(19萬),gbinst1用户任務佔絕對多數,99.8%的SELECT在3秒以內,超過60秒的很少,90%的INSERT在3秒以內,93%的DELETE在3秒以內;

CPU使用率平均約25%,最大約90%,6點至12點CPU使用率較高,有少數時點接近90%,DiskBusy最高不超過60%,其他資源無明顯瓶頸;

2、集羣性能分析及優化建議

業務場景偏向高頻、高併發小數據量操作,除了相對簡單的統計查詢(較集市集羣而言),還有一些單表頻繁增刪改的場景,集羣IO資源是關鍵,當IO資源不足時,增刪改業務容易變慢積壓。

建議的優化方法如下:

  1. 降低gbinst1等用户的Insert/delete/update執行頻率,優化單條insert/delete/update為攢批模式。
  2. 大部分查詢SQL使用了多表關聯、union、order by等運算,過於複雜,高併發場景下會佔用過多CPU資源。對於高併發、高響應要求的場景,根據業界經驗,應當儘量簡化SQL(最好是單表、如能避免排序最佳)。
  3. 儘量減小表的數據規模,以儘量較少查詢複雜度,降低SQL的資源消耗,從而增加併發能力。
  4. 部分表規模太大,也會消耗過多的計算資源,應儘量減小單表數據量,定期清理歷史數據,或按賬期分拆建表。