On 07/09/2017 16:00, David Sommerseth wrote: > On 07/09/17 10:04, Samuli Seppänen wrote: >> On 07/09/2017 10:16, Samuli Seppänen wrote: >>> On 07/09/2017 09:16, Gert Doering wrote: >>>> Hi, >>>> >>>> On Thu, Sep 07, 2017 at 01:52:02AM +0200, David Sommerseth wrote: >>>>> @@ -18,6 +18,8 @@ DeviceAllow=/dev/net/tun rw >>>>> ProtectSystem=true >>>>> ProtectHome=true >>>>> KillMode=process >>>>> +RestartSec=5s >>>>> +Restart=on-failure >>>> >>>> Is there a way to get exponential backoff on restart? >>>> >>>> Restarting is good, but if there is something faulty that leads to >>>> "the process always dies right away", this can lead to very quickly >>>> filling disks with not-so-useful logging... >>>> >>>> (Otherwise, yes, restarting is good :-) ) >>>> >>> >>> Hi, >>> >>> From systemd.unit man-page[1]: >>> >>> StartLimitIntervalSec=, StartLimitBurst= >>> >>> Configure unit start rate limiting. By default, units which are >>> started more than 5 times within 10 seconds are not permitted to >>> start any more times until the 10 second interval ends. >>> >>> I verified this behavior on CentOS 7 using another daemon (monit) by >>> setting "Restart=on-failure" for it, breaking its config file and >>> forcibly killing it. Note that RestartSec is the default, i.e. 100ms: >>> >>> --- >>> >>> Sep 07 09:55:37 centos-7 systemd[1]: monit.service: control process >>> exited, code=exited status=1 >>> >>> Sep 07 09:55:37 centos-7 systemd[1]: Unit monit.service entered failed >>> state. >>> >>> Sep 07 09:55:37 centos-7 systemd[1]: monit.service holdoff time over, >>> scheduling restart. >>> >>> Sep 07 09:55:37 centos-7 systemd[1]: Stopping Pro-active monitoring >>> utility for unix systems... >>> >>> Sep 07 09:55:37 centos-7 systemd[1]: Starting Pro-active monitoring >>> utility for unix systems... >>> >>> Sep 07 09:55:37 centos-7 systemd[1]: monit.service start request >>> repeated too quickly, refusing to start. >>> >>> Sep 07 09:55:37 centos-7 systemd[1]: Failed to start Pro-active >>> monitoring utility for unix systems. >>> >>> Sep 07 09:55:37 centos-7 systemd[1]: Unit monit.service entered failed >>> state. >>> >>> --- >>> >>> As you can see, systemd quickly realizes that monit will not come back >>> up and stops trying. >>> >>> However, when I added "RestartSec=5s" the StartLimit* thresholds were >>> never triggered. This meant that systemd never ceased trying to restart >>> the monit service. >>> >>> David: any particular reason why you added RestartSec? Why not just let >>> it be the default (100ms)? > > Partly to avoid respawning too fast. We don't know what kind of > additional plug-ins or management interface tools have been integrated > and how they react if OpenVPN goes into a tight restart-loop. And > partly to _escape_ the stopping of restarts. > > I'm not sure I'm easily buying into the "faulty configuration" argument.
There is no "faulty configuration argument". I broke monit's configuration file intentionally for the sole purpose of testing systemd's restart functionality. > Because these restart scenarios mostly happens when a sys-admin is > _not_ around. If you're playing with configurations, do a restart to > test the new config, you are around to handle a failed situation. The > only area where this can fail is when we break options and OpenVPN get > updated automatically. But in both these scenarios, a restart delay of > 5 seconds won't cause too much stress on the system. > > I also opted for not much longer delay, as if a restart happens > successfully, most users won't notice that too much. If it is 30 > seconds or 1 minute, that is much more noticeable. But I'm open for > adjusting this too. ------------------------------------------------------------------------------ Check out the vibrant tech community on one of the world's most engaging tech sites, Slashdot.org! http://sdm.link/slashdot _______________________________________________ Openvpn-devel mailing list Openvpn-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/openvpn-devel