Мы определили файл «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
единицы на экземпляр и ограничитель, который касается путей в нужном вам порядке.