systemd:限制自定义服务的启动时并发启动

systemd:限制自定义服务的启动时并发启动

我们定义了一个“[电子邮件保护]“处理我们的应用服务器启动的文件。在某些服务器上,有很多应用服务器,我们遇到一两台服务器无法启动的问题。

这是 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

目标是所有服务器都应该启动,但在启动时我不希望全部的课程同时开始。他们都应该能够跑步同时。

答案1

如果您不关心顺序,可以使用ExecStartPre带有小变量 sleep 的批处理。ExecStartPre=/bin/bash -c 'sleep $(( RANDOM % 5 ))'应该将它们分成五个桶,每个桶延迟一秒。如果您需要控制顺序,可以使用.path每个实例一个单元和一个按您想要的顺序触碰路径的限制器。

相关内容