2013-03-11 1 views
42

У меня есть экземпляр RDS от Amazon. Свободная память снижается с момента установки в течение 1-2 недель, начиная с 15 ГБ памяти до примерно 250 МБ. Поскольку он снизил этот минимум в последние дни, он начал напоминать пилообразный шаблон, в котором свободная память падает до этого диапазона (250 - 350 МБ), а затем возвращается вверх до 500 - 600 МБ в пилообразном паттерне.Amazon RDS заканчивается свободной памяти. Я должен беспокоиться?

Не было заметного снижения качества приложения. Тем не менее, я беспокоюсь, что в БД не хватит памяти и аварии.

Есть ли опасность, что экземпляр RDS будет исчерпан? Есть ли какой-либо параметр или параметр, который я должен искать, чтобы определить, правильно ли настроен экземпляр? Что вызывает этот пильный рисунок?

Freeable Memory Declining

ответ

36

Freeable поле памяти используется MySQL для буферизации и кэширования для собственных процессов поэтому интерьер. Нормально, что количество свободной памяти уменьшается со временем. Я бы не стал беспокоиться, что он пинает старую информацию, поскольку она требует больше места.

+0

Не могли бы вы указать на документацию mysql, которая упоминает об этом? –

+0

https://dev.mysql.com/doc/refman/5.7/en/buffering-caching.html - Но это не строго MySQL. Сама ОС (RDS или нет) обычно также кэширует ввод-вывод.В сочетании с буферизацией/кэшированием MySQL и кэшированием (диском) OS OS типичная операционная система почти всегда заполняет RAM доступную (и при необходимости заполняет записи). Это желательно - неплохо. В любом случае, Linux обычно будет использовать партии/всю доступную оперативную память без SQL-процесса. Как уже упоминалось, если freeable не становится ОЧЕНЬ низким (и остается там/swaps), вы в порядке. – bshea

31

Короткий ответ - вы не должны беспокоиться о FreeableMemory, если он не стал действительно низким (около 100-200 Мб) или значительным обменом (см. Метку RDS SwapUsage).

FreeableMemory не является метрикой MySQL, а метрикой ОС. Трудно дать точное определение, но вы можете рассматривать его как память, которую ОС сможет выделить любому, кто ее запрашивает (в вашем случае это, вероятно, будет MySQL). У MySQL есть набор настроек, которые ограничивают использование общей памяти в некоторой кепке (вы можете использовать что-то вроде this для фактического вычисления). Маловероятно, что ваш экземпляр когда-либо достигнет этого предела, из-за того, что в целом вы никогда не достигаете максимального количества соединений, но это все еще возможно.

Теперь возвращается к «упадку» в метрике FreeableMemory. Для MySQL большая часть памяти потребляется пулом буферов InnoDB (подробнее см. here). У экземпляров RDS в конфигурации по умолчанию есть размер для этого буфера, установленного на 75% физической памяти хостов, что в вашем случае составляет около 12 ГБ. Этот буфер используется для кэширования всех данных БД, которые используются как для операций чтения, так и для записи. Итак, в вашем случае, поскольку этот буфер действительно большой - он медленно заполняется данными, которые кэшируются (вполне вероятно, что этот буфер на самом деле достаточно велик, чтобы кэшировать всю БД). Поэтому, когда вы впервые запускаете экземпляр, этот буфер пуст, и как только вы начинаете читать/записывать материал в БД, все эти данные вводятся в кеш. Они останутся здесь до того момента, когда этот кеш станет полным, и придет новый запрос. В это время наименее недавно используемые данные будут заменены новыми данными. Таким образом, первоначальный спад FreeableMemory после перезапуска экземпляра DB объясняет это. Это неплохо, потому что вы действительно хотите, чтобы ваши данные были кешем, чтобы ваша БД работала быстрее. Единственное, что может пойти неприятно, - это то, что часть или весь этот буфер будет вытеснен из физической памяти в swap. В этот момент у вас будет огромное падение производительности.

В качестве профилактического обслуживания может быть хорошей идеей настроить MySQL max-память, используемую для разных вещей, в случае, если метка FreeableMemory постоянно находится на уровне 100-200 Мб, чтобы уменьшить возможность замены.

0

Я столкнулся с той же проблемой, свободная память в моем случае опустилась ниже 40 МБ, перезагрузка экземпляра сбросила память.

 Смежные вопросы

  • Нет связанных вопросов^_^