aboutsummaryrefslogtreecommitdiff
path: root/setup/base/sanity_unix.go
diff options
context:
space:
mode:
Diffstat (limited to 'setup/base/sanity_unix.go')
-rw-r--r--setup/base/sanity_unix.go22
1 files changed, 22 insertions, 0 deletions
diff --git a/setup/base/sanity_unix.go b/setup/base/sanity_unix.go
new file mode 100644
index 00000000..0c1543e0
--- /dev/null
+++ b/setup/base/sanity_unix.go
@@ -0,0 +1,22 @@
+//go:build linux || darwin || netbsd || freebsd || openbsd || solaris || dragonfly || aix
+// +build linux darwin netbsd freebsd openbsd solaris dragonfly aix
+
+package base
+
+import (
+ "syscall"
+
+ "github.com/sirupsen/logrus"
+)
+
+func platformSanityChecks() {
+ // Dendrite needs a relatively high number of file descriptors in order
+ // to function properly, particularly when federating with lots of servers.
+ // If we run out of file descriptors, we might run into problems accessing
+ // PostgreSQL amongst other things. Complain at startup if we think the
+ // number of file descriptors is too low.
+ var rLimit syscall.Rlimit
+ if err := syscall.Getrlimit(syscall.RLIMIT_NOFILE, &rLimit); err == nil && rLimit.Cur < 65535 {
+ logrus.Warnf("IMPORTANT: Process file descriptor limit is currently %d, it is recommended to raise the limit for Dendrite to at least 65535 to avoid issues", rLimit.Cur)
+ }
+}