У нас виникають постійні проблеми з заміною нашого примірника ElastiCache Redis. Амазонка, здається, має певний внутрішній моніторинг, який помічає скачки заміни та просто перезапускає екземпляр ElastiCache (тим самим втрачаючи всі наші кешовані елементи). Ось діаграма BytesUsedForCache (синя лінія) та SwapUsage (помаранчева лінія) на нашому екземплярі ElastiCache за останні 14 днів:
Ви можете побачити схему зростаючого використання swap, яка, здається, викликає перезавантаження нашого примірника ElastiCache, в якому ми втрачаємо всі наші кешовані елементи (BytesUsedForCache падає до 0).
На вкладці "Події кешу" на інформаційній панелі ElastiCache є відповідні записи:
Ідентифікатор джерела | Тип | Дата | Подія
cache-instance-id | кеш-кластер | Чт 22 вересня 07:34:47 GMT-400 2015 | Кеш-вузол 0001 перезапущено
cache-instance-id | кеш-кластер | Чт 22 вересня 07:34:42 GMT-400 2015 | Помилка перезапуску кеш-движка на вузлі 0001
cache-instance-id | кеш-кластер | Нд 20 вересня 11:13:05 GMT-400 2015 | Кеш-вузол 0001 перезапущено
cache-instance-id | кеш-кластер | Чт 17 вересня 22:59:50 GMT-400 2015 | Кеш-вузол 0001 перезапущено
cache-instance-id | кеш-кластер | Ср 16 вересня 10:36:52 GMT-400 2015 | Кеш-вузол 0001 перезапущено
cache-instance-id | кеш-кластер | Вт 15 вересня 05:02:35 GMT-400 2015 | Кеш-вузол 0001 перезапущено
(чиніть попередні записи)
SwapUsage - при звичайному використанні ні Memcached, ні Redis не повинні проводити свопи
Наші відповідні налаштування (не за замовчуванням):
- Тип примірника:
cache.r3.2xlarge
maxmemory-policy
: allkeys-lru (раніше ми використовували типову летючу-lru без великої різниці)maxmemory-samples
: 10reserved-memory
: 2500000000- Перевіряючи команду INFO на екземпляр, я бачу
mem_fragmentation_ratio
від 1,00 до 1,05
Ми зв’язалися зі службою підтримки AWS і не отримали багато корисних порад: вони запропонували збільшити зарезервовану пам’ять ще вище (за замовчуванням - 0, а у нас зарезервовано 2,5 ГБ). У нас не встановлено реплікацію чи знімки для цього екземпляра кешу, тому я вважаю, що ніякі BGSAVE не повинні виникати і спричиняти додаткове використання пам'яті.
Максимальна maxmemory
величина cache.r3.2xlarge - 62495129600 байт, і хоча ми reserved-memory
швидко натискаємо на нашу кришку (мінус нашу ), мені здається дивним, що операційна система хоста відчує тиск, щоб використати тут так багато свопів, і так швидко, якщо тільки Амазонка чомусь спрацювала з налаштуваннями простоти ОС. Будь-які ідеї, чому ми б викликали стільки використання свопів на ElastiCache / Redis, чи вирішення цього питання, що ми могли б спробувати?