如何疑難排解在我的 ElastiCache for Redis 自行設計的叢集中增加的 CPU 用量?

2 分的閱讀內容
0

我想疑難排解在我的 Amazon ElastiCache for Redis 自行設計的叢集中增加的 CPU 用量。

簡短說明

下列項目是適用於 ElastiCache for Redis 的 Amazon CloudWatch CPU 指標:

  • EngineCPUUtilization: 報告 Redis 引擎執行緒的 CPU 使用率。Redis 為單一執行緒。對於具有四個或更多 vCPU 的節點,監控 EngineCPUUtilization 指標為最佳實務。
  • CPUUtilization: 指出主機的 CPU 使用率百分比。對於具有兩個或更少 vCPU 的較小節點,請使用 CPUUtilization 指標來監控叢集工作負載。

解決方法

疑難排解高 EngineCPUUtilization

若要疑難排解高 EngineCPUUtilization,請檢查下列內容:

  • 長時間執行的命令,消耗高 CPU 時間: 具有高時間複雜性的命令,例如 keyshkeyshgetall 會消耗高 CPU 時間。若要檢查命令的時間複雜性和效能建議,請參閱 Redis 網站上的命令。如果您使用 Lua 指令碼,則所有伺服器活動都會在執行時期期間遭到封鎖,並且任何 EngineCPUUtilization 都會增加。EVALEVALSHA Redis 命令會使用 Lua 指令碼。如需詳細資訊,請參閱 Redis 網站上的使用 Lua 編寫指令碼EVALEVALSHA。若要檢查是否有長時間執行的命令或 Lua 指令碼,請使用 Redis SLOWLOG
  • 高請求數量: 檢查命令統計資料,以確認命令爆量或延遲增加。若要檢查命令統計資料,請使用 CloudWatch 指標,例如 GetTypeCmdsHashBasedCmds。或者,使用 Redis INFO 命令。如需詳細資訊,請參閱 Redis 網站上的 INFO。如果您有高請求數量,並且應用程式工作負載符合預期,則請擴展叢集
  • 備份和複寫: 如果發生備份或複寫,請檢查 SaveInProgress 指標。正在進行背景儲存 (分支或無分支) 時,此二進制指標會顯示 1,而未進行背景儲存時,則會顯示 0。確保有足夠的記憶體來建立 Redis 快照
  • 高 NewConnections 數量: 在短時間內,高新用戶端連線請求數量可能會造成 EngineCPUUtilization 增加。如需處理大量連線時的最佳實務,請參閱最佳實務: Redis 用戶端和 Amazon ElastiCache for Redis。對於 Redis 6.2 及更新版本,已實施效能改進。如需詳細資訊,請參閱 ElastiCache for Redis 6.2 (增強版)
  • 高金鑰移出數量: Redis 會根據 maxmemory-policy 參數移出金鑰。快取沒有足夠的記憶體來容納新資料時,即會發生移出。如果為高移出容量,則 Redis 會使用更多 CPU 資源來移出金鑰,而 EngineCPUUtilization 也會增加。若要監控移出容量,請使用 CloudWatch 指標移出。如果為高移出容量,請使用較大的節點類型或新增更多節點來擴展叢集
  • 高回收次數: 為了釋放記憶體,Redis 會取樣並刪除任何達到逾時到期的金鑰。這個程序稱為回收。如果為高過期數量,CPUUtilizationEngineCPUUtilization 可能會增加。若要監控金鑰到期事件的數量,請使用已回收的 CloudWatch 指標 **。**最佳實務是確保太多金鑰不會同時過期。若要確保金鑰在不同的時段過期,請使用 EXPIREAT 命令,或為金鑰設定不同的 TTL 值。如需詳細資訊,請參閱 Redis 網站上的 EXPIREAT

疑難排解高 CPUUtilization

若要疑難排解高 CPUUtilization,請檢查下列項目:

  • 高網路流量或連線: 高網路流量或連線可能會導致 Amazon ElastiCache Redis 上的 CPUUtilization 增加。若要檢查高網路流量或連線,請檢查 NewConnectionsNetworkBytesInNetworkBytesOutNetworkPacketsIn,以及 NetworkPacketsOutCloudWatch 指標
  • 由其他執行緒處理的非同步 I/O: 對於支援的節點類型,增強的 I/O 旨在處理專用執行緒上的網路 I/O。此外,對於 Redis 6.2 版及更新版本,支援 TLS 卸載,並允許 ElastiCache for Redis 在 I/O 執行緒上執行 TLS 操作。TLS 操作會使用節點中可用的額外 CPU 核心,這種額外的 CPU 使用可能會導致 **CPUUtilization 增加。**如需詳細資訊,請參閱 Amazon EC2 M5 和 R5 執行個體的 Amazon ElastiCache 效能提升
  • 持續受管的維護和服務更新: 維護和服務更新需要運算容量,可能會導致 CPUUtilization 增加。請確定您檢查維護時段,以查看是否同時發生 CPUUtilization 增加。最佳實務是將維護時段設定為低用量的時段。如需詳細資訊,請參閱 Amazon ElastiCache 受管的維護和服務更新說明頁面
  • 高分頁和操作: 節點上的記憶體不足可能會導致核心移出記憶體進行交換。此動作可能會導致效能降級。如果分頁過多,則 CPUUtilization 可能會增加。此外,如果發生備份或擴展等操作時節點上的負載很高,則 CPUUtilization 可能會增加。如需詳細資訊,請參閱使用 Amazon CloudWatch 監控 Amazon ElastiCache for Redis 的最佳實務
AWS 官方
AWS 官方已更新 10 個月前