Discourse перестал работать — нагрузка на CPU/RAM?

Всем привет.

Надеюсь, кто-то сможет помочь мне решить проблему, с которой мы столкнулись на нашем форуме: —
https://forum.combustionpunks.co.uk
Это долгая история… но я хочу предоставить всю информацию, которая может помочь в решении проблемы, так что, пожалуйста, наберитесь терпения. В ходе этого вы заметите, что у меня не так много опыта работы с Ubuntu :frowning:

Всё работало отлично уже довольно долгое время :smiley: вплоть до вчера вечером.
Мы проводим небольшой ребрендинг: обновляем логотипы и тому подобное, поэтому вчера я зашёл в панель администратора и загрузил новые логотипы. Также я заметил, что мы отстали на несколько версий, поэтому запустил обновления, которые пришлось выполнить вручную, следуя инструкциям здесь: —

например:
cd /var/discourse
git pull
./launcher rebuild app

Всё казалось в порядке, обновления завершились, логотипы загружены и отображаются, я попробовал несколько тем, вернулся к исходной, затем вышел на встречу, связанную с вовлечённостью в сообщество… да, я пошёл в паб пообедать с друзьями.

Примерно через 30 минут, находясь вне дома, мы заметили, что форум недоступен… небольшая паника, затем выяснилось, что у Digital Ocean возникли проблемы, и я успокоился.

Вернулся примерно через 2 часа, проблемы с DO были решены, но форум всё ещё был недоступен… не страшно, я перезапустил дроплет, всё снова заработало… примерно через 30 минут он снова стал недоступен…

Далее я подумал, что лучше всего будет устранить все оставшиеся обновления, поэтому попытался обновить Docker командой:
wget -qO- https://get.docker.com/ | sh
это, казалось, ничего не изменило.
Пересобрал приложение: ./launcher rebuild app
Я не думаю, что обновление произошло, так как при пересборке приложения сообщается:
docker version 17.05.0-ce устарела, и при запуске docker version также отображается 17.05.0-ce

Затем я заметил, что прямо перед тем, как форум стал недоступен, мы получали сообщения вроде:
Out of memory: kill process (convert) or sacrifice child
Out of memory: kill process (ruby) or sacrifice child

Запустил Htop

Много процессов sidekiq, нашёл пост о снижении количества потоков, обрабатываемых одновременно — уменьшил с 80 до 2 — проблемы продолжились.

Процессы convert работают с JPEG-файлами в var/www/discourse/public/uploads/default/original/ (не знаю, как отобразить остальную часть строки, чтобы увидеть, с какими именно изображениями они работают).

Использование процессора 100% — Ruby var/www/discourse/vendor/bundle/ruby/2.6.0/bin/unicorn -E

Обновил ОС — теперь работает Ubuntu 18.04.
Docker всё ещё на версии 17.05.0-ce.

Размер дроплета увеличен с 2 ГБ, 1 vCPU, 50 ГБ ($10) до 3 ГБ, 1 vCPU, 50 ГБ ($15).
Проблемы продолжаются.

Перезапуск дроплета или пересборка Discourse возвращает систему в рабочее состояние на короткое время (10–30 минут), после чего она снова становится недоступной.

Любая помощь по этому вопросу будет очень признательна, заранее большое спасибо.
Мэтт

Некоторое время назад в способе сжатия изображений произошли изменения. Скорее всего, вы сейчас испытываете нагрузку из-за обработки изображений. Это должно скоро пройти, но если у вас много изображений, это может занять некоторое время. Вы можете выполнить

  ps -ax

Или

 top

Чтобы увидеть, что запущено. Нажмите q, чтобы выйти из top.

Спасибо, @pfaffman. Я дам ему поработать ещё немного и посмотрю, справится ли он и немного ли стабилизируется ситуация.

Вы выполнили большую часть рекомендуемых нами шагов по устранению неполадок — отличная работа. На вашем форуме очень много изображений?

Советую вам в ближайшее время обновить Docker, как только появится возможность.

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

Огромное спасибо, ребята.

Проблема всё ещё сохраняется :frowning: процесс ruby /vazr/www/discourse/vendor/bundle/ruby/2.6.0/bin/unicorn -E сейчас использует 98% CPU, форум недоступен.

Количество изображений — не уверен, как это назвать, но их очень много. Хотя наш форум не такой уж большой. Команда df показывает, что из 50 ГБ занято 80%, а в панели администратора Discourse отображается загрузка файлов на 5,7 ГБ.

Команда обновления Docker, которую я пробовал, вроде бы ничего не сделала. Я нашёл инструкции по установке на Ubuntu 18, но не по обновлению. Нужно ли мне следовать инструкциям по установке?

До перезагрузки Droplet сегодня утром процессов конвертации не наблюдалось, а после перезагрузки их стало 5. Они используют примерно 50% CPU и RAM. Остальная часть ресурсов, по-видимому, занята процессами Ruby и Sidekiq, которые периодически потребляют ресурсы. Процессор и память постоянно загружаются на максимум.

Процессы конвертации продолжают завершаться из-за нехватки памяти.

Как вы думаете, всё ещё есть очередь задач? Поможет ли увеличение размера Droplet справиться с этой очередью? Форум остаётся онлайн максимум 30 минут, часто и меньше.

Не удалось решить эту проблему, увеличиваю размер дроплета, чтобы посмотреть, сможет ли он завершить изменение размера изображения, если именно этим он и занимается.

После изменения размера обязательно выполните команду discourse-setup, чтобы настроить параметры памяти и пересобрать систему (или уничтожить и запустить заново).