From 12018b368501d6d571b93f852242b83388892278 Mon Sep 17 00:00:00 2001 From: Christian Schwarz Date: Mon, 24 Oct 2022 23:23:09 +0200 Subject: [PATCH] go1.19: adjust systemd unit to allow setrlimit Go 1.19 uses it during startup. From the Go changelog: > On Unix operating systems, Go programs that import package os now > automatically increase the open file limit (RLIMIT_NOFILE) to the > maximum allowed value; that is, they change the soft limit to match the > hard limit. This corrects artificially low limits set on some systems > for compatibility with very old C programs using the select system call. > Go programs are not helped by that limit, and instead even simple > programs like gofmt often ran out of file descriptors on such systems > when processing many files in parallel. One impact of this change is > that Go programs that in turn execute very old C programs in child > processes may run those programs with too high a limit. This can be > corrected by setting the hard limit before invoking the Go program. --- dist/systemd/zrepl.service | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/dist/systemd/zrepl.service b/dist/systemd/zrepl.service index 9c4ed7c..bc80621 100644 --- a/dist/systemd/zrepl.service +++ b/dist/systemd/zrepl.service @@ -27,7 +27,8 @@ ProtectHome=read-only # SystemCallFilter # ~@privileged doesn't work with Ubuntu 18.04 ssh SystemCallFilter=~ @mount @cpu-emulation @keyring @module @obsolete @raw-io @debug @clock @resources - +# Go1.19 added automatic RLIMIT_NOFILE changes, so, we need to allow that +SystemCallFilter= setrlimit [Install] WantedBy=multi-user.target