Резкий всплеск использования памяти, который не снижается

Чуть больше недели назад я посмотрел график DO по использованию памяти и был весьма удивлён:

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

Что вызывает это? Утилиты top и ps показывают, что основные виновники — процессы postgres. Вот информация от free:

$ free -mh
              total        used        free      shared  buff/cache   available
Mem:          7.8Gi       2.5Gi       142Mi       2.3Gi       5.1Gi       2.6Gi

Я даже не могу получить доступ к дроплету через консоль DO. Он падает из-за нехватки памяти (OOM). К счастью, я настроил SSH-ключи и могу подключиться со своего личного ноутбука, поэтому пока ещё имею доступ к дроплету.

Что мне делать? У меня ограниченный бюджет, поэтому изменение размера дроплета — крайняя мера. Подскажите, есть ли другие варианты. Всё это выглядит совершенно неожиданным. Я использую версию 2.7.0.beta5.

Что изменилось недавно, если вообще что-то изменилось? Вы обновили систему?

Единственный вертикальный скачок на моих графиках за последние 14 дней также произошел 11 мая, но он был менее выраженным: с 78% до 89%. Возможно, тогда мы провели обновление?

Кажется, это связано с хостом, так как у меня использование памяти снизилось. Обновление версии до beta9 было добавлено 10-го числа, поэтому я, вероятно, сделал пересборку примерно в это время (и скачал новый образ, что видно по использованию диска), хотя я не помню обновления хоста, но возможно, это было.


У вас нет подкачки?

Нет, я уже какое-то время работаю на версии 2.7beta5. Мы давно ничего не меняли.

Причина, по которой я не на последней версии, заключается в том, что после последнего обновления у нашего фронтенд-разработчика возникли проблемы, так как оно внесло некоторые разрушительные изменения в его стили (я просто системный администратор и в таких вещах не разбираюсь). Думаю, в Discourse эти проблемы уже исправлены, но мы ждали выхода следующей минорной версии для обновления.

Что может быть причиной этого на хосте?

Изменение размера droplet удваивает наш счет — поэтому я действительно не хочу этого делать, но это может быть самым простым решением.

Размер swap-памяти такой, какой был по умолчанию, точно не знаю.

:thinking: и что говорит /sidekiq?

Если вы добавите swap, вы избежите OOM. Вам не нужны OOM, и вам не нужно много активности подкачки, иначе скачок использования памяти может быть важен, а может и нет. (Это может быть интересно, но это уже другая тема.)

Я рекомендую выполнить
vmstat 5 5
или аналогичную команду, чтобы увидеть, как выглядит активность подкачки.

Также
free -h
более полезна, чем
free -mh,
так как важно знать, сколько swap-памяти у вас осталось.