diff options
author | Neil Alexander <neilalexander@users.noreply.github.com> | 2022-03-11 17:27:12 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-03-11 17:27:12 +0000 |
commit | 01d71a767dbd11fd7b17b948db6d3052f577c796 (patch) | |
tree | 4928ae412c6bad692f16d956cc5ee08b15f7a48d /setup | |
parent | 507a8e67739c2cfd89f5be48fdf96bdb0d1698d5 (diff) |
Platform sanity checks (#2271)
* Platform sanity checks
* Don't yell about `root` because Docker
Diffstat (limited to 'setup')
-rw-r--r-- | setup/base/base.go | 1 | ||||
-rw-r--r-- | setup/base/sanity_other.go | 8 | ||||
-rw-r--r-- | setup/base/sanity_unix.go | 22 |
3 files changed, 31 insertions, 0 deletions
diff --git a/setup/base/base.go b/setup/base/base.go index ef3b2be2..692a77d5 100644 --- a/setup/base/base.go +++ b/setup/base/base.go @@ -100,6 +100,7 @@ const ( // The componentName is used for logging purposes, and should be a friendly name // of the compontent running, e.g. "SyncAPI" func NewBaseDendrite(cfg *config.Dendrite, componentName string, options ...BaseDendriteOptions) *BaseDendrite { + platformSanityChecks() useHTTPAPIs := false cacheMetrics := true for _, opt := range options { diff --git a/setup/base/sanity_other.go b/setup/base/sanity_other.go new file mode 100644 index 00000000..48fe6e1f --- /dev/null +++ b/setup/base/sanity_other.go @@ -0,0 +1,8 @@ +//go:build !linux && !darwin && !netbsd && !freebsd && !openbsd && !solaris && !dragonfly && !aix +// +build !linux,!darwin,!netbsd,!freebsd,!openbsd,!solaris,!dragonfly,!aix + +package base + +func platformSanityChecks() { + // Nothing to do yet. +} 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) + } +} |