Назад | Перейти на главную страницу

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

Мы определили файл «myapp @ .service», который обрабатывает запуск нашего сервера приложений. На некоторых серверах много серверов приложений, и мы сталкиваемся с проблемами, когда один или два сервера не запускаются.

Это сервер RedHat Enterprise Linux 7.

Есть ли способ ограничить количество одновременных / одновременных процессов для этой одной службы?

Служебный файл:

[Unit]
Description=Appserver Instance %i
After=network.target

[Service]
Type=forking
ExecStart=/custom/server start %i
ExecStop=/custom/server stop %i
PIDFile=/custom/servers/.pid/%i.pid
User=%i
SuccessExitStatus=1
TimeoutStartSec=600
TimeoutStopSec=60

[Install]
WantedBy=multi-user.target

Цель - запустить все серверы, но во время загрузки я не хочу все из них запускаться одновременно. Все они должны уметь бегать в то же время.

Если вас не волнует порядок, вы можете использовать ExecStartPre с небольшой переменной сна. ExecStartPre=/bin/bash -c 'sleep $(( RANDOM % 5 ))' нужно разделить их на пять ведер, каждое с задержкой на секунду. Если вам нужно контролировать порядок, вы можете использовать .path единицы на экземпляр и ограничитель, который касается путей в нужном вам порядке.