Следовал руководству GitHub для VPS. Помогите применить лимиты RAM/vCPU

(1)

Это VPS на Ubuntu 24. Discourse уже использует 10 ГБ оперативной памяти. Это недопустимо.

Похоже, что он сформировал команду docker run. Хотя в ней уже указано:

–shm-size=512m

Я бы предпочёл добавить ограничения по CPU и RAM, так как не хочу, чтобы он забирал все 4 ядра и 12 ГБ памяти, ведь здесь будут работать и другие контейнеры Docker. Можно ли просто скопировать полученную команду, или она где-то сохраняется? Я планирую выполнить docker stop и docker rm, чтобы добавить:

–cpu-shares=1100 --shm-size=512m --memory=4g --memory-swap=8g --kernel-memory=5500m

Есть ли лучший способ применить эти ограничения?

(2)

Действительно ли «app» — это имя контейнера? –name app

Команда docker ps показывает, что «app» — единственный запущенный контейнер.

(3)

Это не искажено. На экране проверки перед запуском был указан домен моего провайдера SMTP:

DISCOURSE_SMTP_DOMAIN=discourse.example.com

Почему теперь это буквально так? Как это исправить? Интересный факт: система смогла отправить мне ссылку подтверждения по электронной почте.

(4)

Команда docker run немного искажена:

/usr/bin/docker run --shm-size=512m -d --restart=always -e LANG=en_US.UTF-8 -e RAILS_ENV=production -e UNICORN_WORKERS=8 -e UNICORN_SIDEKIQS=1 -e RUBY_GC_HEAP_GROWTH_MAX_SLOTS=40000 -e RUBY_GC_HEAP_INIT_SLOTS=400000 -e RUBY_GC_HEAP_OLDOBJECT_LIMIT_FACTOR=1.5 -e DISCOURSE_DB_SOCKET=/var/run/postgresql -e DISCOURSE_DB_HOST= -e DISCOURSE_DB_PORT= -e DISCOURSE_FORCE_HTTPS=true -e LC_ALL=en_US.UTF-8 -e LANGUAGE=en_US.UTF-8 -e DISCOURSE_HOSTNAME=a.shop -e DISCOURSE_DEVELOPER_EMAILS=x -e DISCOURSE_SMTP_ADDRESS=x -e DISCOURSE_SMTP_PORT=587 -e DISCOURSE_SMTP_USER_NAME=x -e DISCOURSE_SMTP_PASSWORD=Fx -e DISCOURSE_SMTP_DOMAIN=discourse.example.com -e DISCOURSE_NOTIFICATION_EMAIL=x -e LETSENCRYPT_ACCOUNT_EMAIL=x -h hoho-app -e DOCKER_HOST_IP=172.17.0.1 --name app -t -p 80:80 -p 443:443 -v /var/discourse/shared/standalone:/shared -v /var/discourse/shared/standalone/log/var-log:/var/log --mac-address xx local_discourse/app /sbin/boot

Я следовал этим инструкциям:

Это ответ, предоставленный ask.discourse.org. Пожалуйста, оцените его полезность.


1. Установка постоянных ограничений на CPU и RAM для Docker Discourse

При установке Discourse на VPS через официальное руководство GitHub ограничения ресурсов, такие как --memory и --cpus, по умолчанию не включаются. Хотя вы можете вручную добавить такие флаги в команду запуска Docker, любые изменения, сделанные напрямую через docker stop и новый docker run, будут утеряны после выполнения ./launcher rebuild app. Скрипт запуска всегда воссоздает контейнер.

Рекомендуемые подходы:

a) Изменение скрипта запуска
Чтобы постоянно применять ограничения ресурсов, необходимо изменить скрипт launcher, который Discourse использует для запуска контейнеров Docker. Например, примерно на строке 289 адаптируйте:

$docker_path run $restart_policy "${env[@]}" -h "`hostname`-$config" \
    -m="4g" --cpus="2.0" -e DOCKER_HOST_IP=$docker_ip ...

Это гарантирует, что каждый запуск ./launcher rebuild создаст контейнер с вашими ограничениями.

Источник и дополнительная информация:

b) Прямое редактирование команды Docker
Хотя технически возможно запустить Docker с пользовательскими ограничениями, скопировав вашу обновлённую команду docker run, это не является постоянным решением и не рекомендуется.

На данный момент нет официального постоянного «встроенного» способа передачи аргументов Docker --memory или --cpus для стандартных инструментов развёртывания Discourse, кроме изменения скрипта запуска.


2. Имя контейнера

По умолчанию скрипт запуска Discourse называет контейнер app. Вы можете убедиться в этом с помощью команды docker ps. Изменение имени контейнера также потребует прямого изменения скрипта запуска или шаблонов.
Подробнее: Discourse в контейнере Docker


Полезные ссылки


Если вы ищете более элегантный и постоянный способ (например, через шаблон или поддерживаемую функцию запуска), ознакомьтесь с этой темой:
Параметры для VPS с ограниченными ресурсами?

Отлично. После того как я подтвержу, что снимки можно восстановить так, как я ожидаю, я попробую этот трюк.

Зависит ли количество единорогов напрямую в 2 раза от числа vCPU на VPS?