public inbox for pgsql-docs@postgresql.org  
help / color / mirror / Atom feed
From: Andrew Jackson <andrewjackson947@gmail.com>
To: pgsql-docs@postgresql.org
Subject: Add Restart=on-failure To Example Systemd File
Date: Thu, 27 Nov 2025 12:55:11 -0600
Message-ID: <CAKK5BkFfMpAQnv8CLs=i=rZwurtCV_gmfRb0uZi-V+d6wcryqg@mail.gmail.com> (raw)

Hi,

Currently the systemd file in the documentation does not specify a
restart policy. By default systemd will not attempt to restart a
service that has failed (killed by OOM-killer for example) [0]. The
systemd docs recommends "Setting this to on-failure is the recommended
choice for long-running services, in order to increase reliability by
attempting automatic recovery from errors." I think that Postgres is
probably a good example of a "long-running service". Pgbouncer for
example also uses "Restart=on-failure" [1].

Wondering also if there are any factors that I am not considering
here. Perhaps if this is the case that this is not good blanket
guidance, it would be worth it to provide some guidance around Restart
systemd parameter in the postgres docs.

[0] https://www.freedesktop.org/software/systemd/man/latest/systemd.service.html
[1] https://github.com/pgbouncer/pgbouncer/blob/master/etc/pgbouncer.service

Thanks,
Andrew Jackson


Attachments:

  [text/x-patch] 0001-doc-Add-restart-on-failure-to-example-systemd-file.patch (1.2K, 2-0001-doc-Add-restart-on-failure-to-example-systemd-file.patch)
  download | inline diff:
From 9a0885ecfccbe69d6704d0c0d69347ccc23cdddb Mon Sep 17 00:00:00 2001
From: Andrew Jackson <andrewjackson947@gmail.com>
Date: Thu, 27 Nov 2025 10:45:52 -0600
Subject: [PATCH] doc: Add restart on failure to example systemd file

The documentation previously had a systemd unit file
that would not attempt to recover from process failures
such as OOM's, segfaults, etc. This commit adds
`Restart=on-failure` which tells systemd to attempt to
restart the process after failure. This is the recommended
configuration per the systemd documentation: "Setting this
to on-failure is the recommended choice for long-running
services". Most postgres users will simply copy/paste
what the postgres docs recommend and will probably do
their own research and change the service file to restart
on failure, so might as well set this as the default in
the postgres docs.
---
 doc/src/sgml/runtime.sgml | 1 +
 1 file changed, 1 insertion(+)

diff --git a/doc/src/sgml/runtime.sgml b/doc/src/sgml/runtime.sgml
index 0c60bafac63..dbb3b2ef53f 100644
--- a/doc/src/sgml/runtime.sgml
+++ b/doc/src/sgml/runtime.sgml
@@ -491,6 +491,7 @@ ExecReload=/bin/kill -HUP $MAINPID
 KillMode=mixed
 KillSignal=SIGINT
 TimeoutSec=infinity
+Restart=on-failure

 [Install]
 WantedBy=multi-user.target
--
2.49.0



reply

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Reply to all the recipients using the --to and --cc options:
  reply via email

  To: pgsql-docs@postgresql.org
  Cc: andrewjackson947@gmail.com
  Subject: Re: Add Restart=on-failure To Example Systemd File
  In-Reply-To: <CAKK5BkFfMpAQnv8CLs=i=rZwurtCV_gmfRb0uZi-V+d6wcryqg@mail.gmail.com>

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

This inbox is served by agora; see mirroring instructions
for how to clone and mirror all data and code used for this inbox