因此,我有这个systemd服务文件,它充当了一些平等服务的模板(使用%i),这些服务充当池的工作程序。
[Unit]
Description=Bot %i
[Service]
Environment=
User=limitedPermission
WorkingDirectory=${installFolder}
ExecStart=${installFolder}/run_bot.sh --bot-number %i
Restart=on-failure
[Install]
WantedBy=multi-user.target
为实例bot @ 01到bot @ 07启用了此脚本,以便在系统启动时产生7个实例。
这是可行的,但是各个实例在启动时需要大量资源(CPU周期和RAM),因此在同时启动所有实例时会彼此降低速度。有时需要近20分钟。启动后,实例已加载所有必需的数据并保持空闲状态,在此状态下几乎不需要任何资源。
单独启动它们时,整个过程要快得多,并且在不受系统资源限制的情况下,单个实例的启动时间不到一分钟。
所以这是我要实现的目标: 理想情况下,当脚本检测到自己的另一个实例在少于所述时间的时间内启动时,僵尸程序的启动会延迟一定的时间。 我发现this question会产生延迟,但仅适用于一个我不需要的实例。 我想到了随机延迟(可以很容易地与该解决方案一起使用),平均而言,这可能是一个不错的选择,并且不需要脚本彼此了解,但是在单独启动/重新启动实例时也会出现这种情况,因为锁定的东西显然不是目标。
所以我想知道,有人遇到过类似的问题吗?如果是,您是否找到了解决此问题的更好方法?另外,我如何检查最近是否启动了另一个实例? 预先感谢。