Pingora does not depend on systemd, but it integrates naturally with it. Because Pingora handles its own daemonization, PID tracking, and graceful upgrade signalling, you only need a small service unit to wire everything together. The result is a fully managed service that supportsDocumentation Index
Fetch the complete documentation index at: https://mintlify.com/cloudflare/pingora/llms.txt
Use this file to discover all available pages before exploring further.
systemctl start, systemctl stop, and — most usefully — systemctl reload for zero-downtime binary upgrades.
Service Unit
The following unit file configures systemd to manage a Pingora server. It usesType=forking because Pingora daemonizes itself (the parent exits after the fork), and PIDFile so that systemd can track the background process and send signals to the correct PID.
/etc/systemd/system/pingora.service, then enable and start it:
How systemctl reload Works
The ExecReload directive runs two commands in sequence when you call systemctl reload pingora.service:
kill -QUIT $MAINPID— sends SIGQUIT to the running Pingora process. The old instance starts transferring its listening socket file descriptors to the upgrade socket path configured in/etc/pingora.conf./bin/pingora -u -d -c /etc/pingora.conf— launches the new binary with the--upgradeflag. It connects to the upgrade socket, receives the file descriptors, and immediately begins serving traffic. The old instance drains and exits.
Stopping the Service
Usesystemctl stop to send SIGTERM and trigger a graceful shutdown:
