為何交換會在 ElastiCache 中發生?

上次更新日期:2022 年 7 月 19 日

我看到我的 Amazon ElastiCache 執行個體中的交換活動有所增加? 如何解決此錯誤?

簡短描述

ElastiCache 可在 Linux 作業系統 (OS) 上執行。交換行為會受到作業系統控制,也會受到作業系統版本或活動模式等因素的影響。執行個體會在交換使用量中發生波動是預期的行為。

當系統在磁碟和 RAM 之間遷移頁面,而可用的隨機存取記憶體 (RAM) 不足時,就會發生交換問題。

Linux 作業系統主動重新放置記憶體頁面來交換,主要原因有兩個:

  • ElastiCache 節點處於記憶體壓力之下
  • Linux 將不常存取的記憶體交換至磁碟

解決方案

ElastiCache 節點處於記憶體壓力之下

如果您的快取節點使用的記憶體超過執行個體的可用記憶體,Linux 會將資料從記憶體交換到磁碟,以釋放記憶體空間供使用。當 FreeableMemory CloudWatch 指標等於零,或 SwapUsage 指標大於 FreeableMemory 指標時,表示節點處於記憶體壓力之下。

由於 RedisMemcached 都在記憶體快取內,因此交換會降低應用程序的速度。

如果您發現節點因記憶體壓力而發生交換,請縱向擴展到較大的快取節點類型。否則,請為 Redis 設定預留記憶體參數,或為 Memcached 設定連線開銷參數。

Linux 將不常存取的記憶體交換至磁碟

當 ElastiCache 節點沒有處於記憶體壓力之下時,可能會使用交換,因為 Linux 作業系統會主動遷移不常用於交換的記憶體頁面,以提高記憶體效率。此使用是正常的核心行為,並不意味著主動讀取和寫入交換。

最佳做法是檢閱 SwapUsage 指標,以確認使用的交換量不超過 300 MB。


此文章是否有幫助?


您是否需要帳單或技術支援?