我想解決 Amazon ElastiCache 執行個體中交換活動增加的問題。
簡短說明
Elasticache 在 Linux 上執行。作業系統 (OS) 因素,例如版本和活動模式,控制交換行為。交換使用情況的波動是一種預期的行為。如果系統在磁碟與 RAM 之間移動頁面時,沒有足夠的可用 RAM,則會發生交換問題。
下列原因導致 Linux OS 重新放置記憶體頁面以進行交換:
- ElastiCache 節點面臨記憶體壓力。
- Linux 將不常存取的記憶體交換至磁碟。
解決方法
ElastiCache 節點面臨記憶體壓力
如果您的快取節點使用的記憶體超過可用的執行個體記憶體,則 Linux 將資料從記憶體交換到磁碟以釋放空間。為確定節點是否面臨壓力,請檢閱 FreeableMemory 和 SwapUsage Amazon CloudWatch 指標。
FreeableMemory 指標中的零值表示節點面臨記憶體壓力。對於 SwapUsage 指標,大於 FreeableMemory 值的值表示節點面臨記憶體壓力。
由於 Redis 和 Memcached 位於記憶體快取中,因此交換活動會減慢您的應用程式。如果節點因記憶體壓力而進行交換,請向上擴展至較大的快取節點類型。您也可以設定 Redis 的預留記憶體參數,或設定 Memcached 的連線負載參數。
Linux 將不常存取的記憶體交換至磁碟
當 ElastiCache 節點未遭受記憶體壓力時,Linux 可能會使用交換。為了提高記憶體效率,Linux 將不常使用的記憶體頁面交換至磁碟。這是正常的內核行為,並不意味著主動讀取和寫入來交換。最佳做法是檢閱 SwapUsage 指標,以確認所使用的交換量不超過 300 MB。
相關資訊
主機層級指標
我應該監控哪些指標? (Amazon ElastiCache for Redis)
我應該監控哪些指標? (Amazon ElastiCache for Memcached)