我有一个显示以下错误的systemd服务 service start request repeated too quickly, refusing to start
我了解该服务已配置为在失败时重新启动,并且一次又一次地重新启动。但是到底什么时候拒绝重启?有没有定义它的限制或数字?
而且,这too quickly
到底是什么意思,这是给定时间段内重新启动次数的限制吗?
我有一个显示以下错误的systemd服务 service start request repeated too quickly, refusing to start
我了解该服务已配置为在失败时重新启动,并且一次又一次地重新启动。但是到底什么时候拒绝重启?有没有定义它的限制或数字?
而且,这too quickly
到底是什么意思,这是给定时间段内重新启动次数的限制吗?
Answers:
默认限制是允许在10秒内重新启动5次。如果服务由于Restart=
服务定义中的config选项而超过该阈值,则它将不会尝试进一步重启。
这些速率是使用StartLimitIntervalSec=
和StartLimitBurst=
选项配置的,而选项则用于Restart=
控制SystemD尝试重新启动服务的时间。
更多信息中man systemd.unit
和man systemd.service
。
然后用于systemctl daemon-reload
重新加载单元配置。
StartLimit...
选项可能不在其中,而仅使用默认选项(在10秒内重新启动5次)。
/etc/systemd/system.conf
使用DefaultStartLimitIntervalSec
(和类似的)选项配置默认值。但是,通常不设置这些参数,而是使用内置的默认值。请参阅man systemd-system
。
值得注意的是,某些故障似乎引发了此错误,而原因却不同。
我注释掉了默认的禁令时间,并插入了一个替代的内联
**bantime = 7200 #3600**
我还添加了一个新部分[sasl],其中包括一个过滤器名称,该名称与我在本文中给出的名称有所不同。
fail2ban拒绝重新启动,因此没有错误地出现任何错误,
服务启动请求重复太快,拒绝启动错误
只有当我注释掉[sasl]部分时,我才得到一个错误,该错误涉及无效的禁止时间,我从该错误中收集到它无法应对嵌入式注释。
当我修复该问题并取消注释新的[sasl]部分时,出现错误,未找到过滤器。替换正确命名的过滤器会导致fail2ban重新加载,如预期的那样。
因此,如果进行更改并出现此错误,请确保在尝试修复症状之前先将更改删除并仍然出现相同的错误。
我刚刚用于解决同一问题的一种快速而又肮脏的方法是,我创建了一个bash包装程序脚本,该脚本会休眠,以使服务无法以最快的速度启动。对我有用,因为我不需要立即重启。
/root/sleep_and_start_autossh.sh
/bin/bash -e
sleep 200
/usr/bin/autossh args...
/etc/systemd/system/autossh.service
StartLimitIntervalSec=120 # this didn't seem to do much for me.
#ExecStart=/usr/bin/autossh args ...
ExecStart=/root/sleep_and_start_autossh.sh
StartLimitIntervalSec
以避免节流,或将其设置为0以禁用。阅读systemd文档。