PowerScale OneFS:故障診斷效能問題
Summary: 透過我們的網路組態、處理負載和使用 InsightIQ 進行監控的全方位指南,故障診斷 PowerScale OneFS 效能緩慢的問題,以提升叢集效率。
Symptoms
用戶端電腦執行緩慢。特定工作 (特別是在叢集上執行的工作) 會失敗,或花費比預期更長的時間。
Cause
效能問題通常是因為網路流量、網路組態問題、用戶端或叢集處理負載,或這些問題的組合所造成。本文說明數種可針對效能問題進行故障診斷的有效方法。
Resolution
使用 InsightIQ
進行故障診斷 目錄:
- 使用 Isilon InsightIQ
- 在不使用 InsightIQ 的情況下進行故障診斷
- 網路輸送量
- 用戶端連線分配
- SmartConnect
- 叢集輸送量
- 叢集處理
- 佇列作業
- CPU
使用 Isilon InsightIQ
使用 Isilon InsightIQ 是監控效能和針對效能問題進行故障診斷的最佳方式。
Isilon InsightIQ 虛擬裝置可讓您使用 InsightIQ Web 型應用程式,彈性、可自訂的圖表檢視來監控和分析 Isilon Cluster 活動。這些圖表提供有關集群硬體、軟體以及文件系統和協定操作的詳細資訊。InsightIQ 可將資料轉換為強調任何效能離群值的視覺資訊,從而快速診斷瓶頸或最佳化工作流程。
如需有關使用 InsightIQ 的詳細資訊,請參閱 InsightIQ 使用者指南。
在不使用 InsightIQ 的情況下進行故障診斷
如果您並未使用 InsightIQ,您可以執行各種命令來調查效能問題。針對效能問題進行故障診斷時,請先檢查網路和叢集的輸送量,再檢查叢集處理,最後檢查個別節點的 CPU 速率。
網路輸送量
使用網路測試工具,例如 Iperf 確定網路上群集和用戶端計算機的輸送量能力。
使用 Iperf,在集群和用戶端上運行以下命令。這些命令會定義一個視窗大小,足以顯示網路連結是否為延遲問題的潛在原因。
- 叢集:
iperf -s -w 262144
- 用戶端:
iperf -c <cluster IP> -w 262144
用戶端連線分配
檢查有多少 NFS 和 SMB 用戶端連線至叢集,以確保不會偏向於其中一個節點。
- 在叢集的任何節點上開啟 SSH 連線,然後使用 root 帳戶登入。
- 執行 下列命令以檢查 NFS 用戶端:
isi statistics query - nodes=all --stats=node.clientstats.connected.nfs,node.clientstats.active.nfs
輸出顯示每個節點連接的客戶端數以及每個節點上處於活動狀態的客戶端數。 - 執行 下列命令以檢查 SMB 用戶端:
isi statistics query - nodes=all --stats=node.clientstats.connected.smb, node.clientstats.active.smb1,node.clientstats.active.smb2
輸出顯示每個節點連接的客戶端數以及每個節點上處於活動狀態的客戶端數。
SmartConnect
檢查並確定正在執行 SmartConnect 的節點不會因網路流量而增加負擔。
- 在叢集的任何節點上開啟 SSH 連線,然後使用 root 帳戶登入。
- 執行 下列命令:
isi_for_array -sq 'ifconfig|grep em -A3'
輸出顯示綁定到外部介面的所有IP位址的清單。 - 檢查是否有任何節點的 IP 位址比其他節點多一個。
- 執行下列命令,檢查您在步驟 3 中注意到的節點狀態:
isi status
檢查輸出的輸送量欄,以判斷步驟 3 中注意到的節點負載。
叢集輸送量
執行讀取測試以評估叢集輸送量,以測量從讀取和寫入檔案所需的時間。請執行至少一次寫入測試和讀取測試,如下所示。
寫入測試
- 在叢集的任何節點上開啟 SSH 連線,然後使用 root 帳戶登入。
- 變更 至 /ifs 目錄:
cd /ifs
- 從叢集上的命令行介面 (CLI),或從 UNIX 或 Linux 用戶端電腦,使用
dd命令,將新檔案寫入叢集。執行 下列命令:dd if=/dev/zero of=1GBfile bs=1024k count=1024
此命令會建立一個範例 1GB 檔案,並報告將其寫入磁碟所花費的時間。 - 從這個命令的輸出結果,推斷在單一串流工作流程中,每秒可將多少 MB 寫入磁碟。
- 如果您有 MAC 用戶端並希望進行進一步分析,
- 啟動「活動監視器」。
- 執行 下列命令,其中
pathToFile是目標檔案的檔案路徑:cat /dev/zero > /pathToFile
此命令有助於測量 Isilon 叢集上寫入作業的輸送量。(雖然可以在 Mac 用戶端上執行dd命令,結果可能不一致。 - 在「活動監視器」的 「網路 」標籤中監視命令的結果。
讀取測試
測量讀取作業的輸送量時,請務必不要對您在寫入測試期間建立的檔案進行讀取測試。由於該檔案已快取,因此讀取測試的結果會不準確。請改為針對尚未快取之檔案測試讀取。在叢集上找到一個大於 1GB 的檔案,並在讀取測試中參考該檔案。
- 在叢集的任何節點上開啟 SSH 連線,然後使用 root 帳戶登入。
- 從叢集上的 CLI,或從 UNIX 或 Linux 用戶端電腦,使用
dd命令,讀取叢集上的檔案。執行 下列命令,其中pathToFile是目標檔案的檔案路徑:dd if=/pathToLargeFile of=/dev/null bs=1024k
此命令讀取目標檔並報告讀取它所花費的時間。 - 如果您有 MAC 用戶端並希望進行進一步分析,
- 啟動「活動監視器」。
- 執行 下列命令,其中
pathToFile是目標檔案的檔案路徑:time cp /pathToLargeFile > /dev/null
此命令有助於測量 Isilon 叢集上讀取作業的輸送量。(雖然可以在 Mac 用戶端上執行dd命令,結果可能不一致。 - 在「活動監視器」的 「網路 」標籤中監視命令的結果。
叢集處理
重新等量分配工作
檢查叢集的輸入/輸出 (I/O) 作業 (IOPS) 之前:
- 判斷叢集上正在執行哪些工作。如果自動平衡、收集或多重掃描等重新等量分配工作正在執行中,請考慮這些工作執行的原因,以及是否應繼續執行。
- 考慮正在使用的資料類型。如果用戶端電腦正在處理大型影片檔案或虛擬機器 (VM),則重新等量分配的工作需要比一般更高的磁碟 IOPS。
- 請考慮暫時暫停重新等量分配工作。這樣可大幅改善效能,而且可能是解決效能問題的可行短期解決方案。
磁碟 I/O
檢查磁碟 I/O 可協助判斷是否有某些磁碟正在遭到過度使用。
依叢集
- 在叢集的任何節點上開啟 SSH 連線,然後使用 root 帳戶登入。
- 執行 下列命令以確認磁碟 I/O:
isi statistics pstat
- 從這個命令的輸出中,將磁碟 IOPS 除以叢集中的磁碟總數。舉例來說,若為使用 Isilon IQ 12000x 節點 (每個節點有 12 部磁碟機) 的 8 節點叢集,您將磁碟 IOPS 除以 96。
若為 X 系列節點和 NL 系列節點,您應會看到 100% 隨機工作流程的磁碟 IOPS 為 70 或以下,100% 循序工作流程的磁碟 IOPS 為 140 或以下。由於 NL 系列節點的 RAM 和 CPU 速度低於 X 系列節點,因此 X 系列節點可處理更高的磁碟 IOPS。
依節點和磁碟
- 在叢集的任何節點上開啟 SSH 連線,然後使用 root 帳戶登入。
- 執行 下列命令以確認節點的磁碟 IOPS,這有助於探索是否過度使用磁碟:
isi statistics query --nodes=all --stats=node.disk.xfers.rate.sum --top
- 執行以下命令,確定如何查詢每個磁碟的統計資訊:
isi statistics describe --stats=all | grep disk
佇列作業
判斷是否過度使用磁碟的另一種方法,是透過判斷叢集中每個磁碟的佇列數量。若為單一串流 SMB 式工作流程,4 佇列可能會代表有問題,而對於高並行 NFS 命名空間作業,佇列會更大。
- 在叢集的任何節點上開啟 SSH 連線,然後使用 root 帳戶登入。
- 執行 下列命令以判斷叢集中每個磁碟的佇列作業數量:
isi_for_array -s sysctl hw.iosched | grep total_inqueue
- 判斷佇列作業所造成的延遲:
sysctl -aN hw.iosched|grep bios_inqueue|xargs sysctl -D
CPU
CPU 問題經常與用戶端在叢集上執行的作業有關。使用 isi statistics 命令中,您可以確定對群集執行的操作,按網路協定或用戶端計算機編目。
- 在叢集的任何節點上開啟 SSH 連線,然後使用 root 帳戶登入。
- 執行 以下命令以確定正在網路上執行哪些操作,並評估哪些操作花費最多時間:
isi statistics protocol --orderby=TimeAvg --top
此命令輸出提供所有網路協定的詳細統計資訊,按群集回應用戶端所需的時間進行組織。儘管此命令的結果可能無法確定哪個操作最慢,但它可以為您指出正確的方向。 - 執行 以下命令以獲取有關 CPU 處理的詳細資訊,例如哪些節點的 CPU 使用量最大:
isi statistics system --top
- 執行 以下命令,獲取每個節點上消耗最多 CPU 資源的四個進程:
isi_for_array -sq 'top -d1|grep PID -A4'
Additional Information
以下是可能感興趣的與本主題相關的建議資源: