mirror of
https://github.com/superseriousbusiness/gotosocial.git
synced 2024-12-18 05:06:29 +00:00
[docs] Add docs about memory requirements and swap (#2385)
This commit is contained in:
parent
5eddef6c9b
commit
0bb9b72334
1 changed files with 44 additions and 0 deletions
|
@ -65,6 +65,50 @@ If you decide to use a VPS instead, you can spin yourself up something cheap wit
|
||||||
|
|
||||||
[Greenhost](https://greenhost.net) is also great: it has zero CO2 emissions, but is a bit more costly.
|
[Greenhost](https://greenhost.net) is also great: it has zero CO2 emissions, but is a bit more costly.
|
||||||
|
|
||||||
|
### Distribution system requirements
|
||||||
|
|
||||||
|
Please make sure to check on your distribution system requirments, especially memory. Many distributions have baseline requirements and running them on a system that doesn't meet them will cause problems without further tuning and tweaking on your part.
|
||||||
|
|
||||||
|
Linux:
|
||||||
|
|
||||||
|
* [Arch Linux][archreq]: `512MB` RAM
|
||||||
|
* [Debian][debreq]: `786MB` RAM
|
||||||
|
* [Ubuntu][ubireq]: `1GB` RAM
|
||||||
|
* [RHEL 8+][rhelreq] and derivatives: `1.5GB` RAM
|
||||||
|
* [Fedora][fedorareq]: `2GB` RAM
|
||||||
|
|
||||||
|
The BSD family of distributions don't document memory requirements as much, but anywhere up from `128MB` is expected to be sufficient.
|
||||||
|
|
||||||
|
[archreq]: https://wiki.archlinux.org/title/installation_guide
|
||||||
|
[debreq]: https://www.debian.org/releases/stable/amd64/ch02s05.en.html
|
||||||
|
[ubireq]: https://ubuntu.com/server/docs/installation
|
||||||
|
[rhelreq]: https://access.redhat.com/articles/rhel-limits#minimum-required-memory-3
|
||||||
|
[fedorareq]: https://docs.fedoraproject.org/en-US/fedora/latest/release-notes/welcome/Hardware_Overview/#hardware_overview-specs
|
||||||
|
|
||||||
|
### Swap
|
||||||
|
|
||||||
|
It is possible to run a system without swap. In order to safely do so and ensure consistent performance and service availability, you need to tune the kernel, system and your workloads accordingly. This requires a good understanding of your kernel's memory management system as well as the memory usage patterns of the workloads you're running.
|
||||||
|
|
||||||
|
!!! note
|
||||||
|
Swap is used to ensure the kernel can efficiently reclaim memory. This is useful even when a system is not experiencing memory contention, like freeing up memory that was only used during process startup. This allows more things that are actively used to be cached in memory. Swap is not what makes your application slow. Experiencing memory contention is what makes things slow.
|
||||||
|
|
||||||
|
Unless you're experienced in doing this kind of tuning and troubleshooting the issues that may arise from not having swap, you should follow your distribution or hosting provider's recommendations and configure an appropriate amount of swap. If your distribution or hosting provider doesn't provide guidance, you can use the following rule of thumb for a server:
|
||||||
|
|
||||||
|
* less than 2GB of RAM: swap = RAM × 2
|
||||||
|
* more than 2GB of RAM: swap = RAM, up to 8G
|
||||||
|
|
||||||
|
### Memory and CPU limits
|
||||||
|
|
||||||
|
It is possible to limit the amount of memory or CPU your GoToSocial instance can consume. Doing so can be done on Linux using [CGroups v2 resource controllers][cgv2].
|
||||||
|
|
||||||
|
You can configure limits for a process using [systemd resource control settings][systemdcgv2], [OpenRC cgroup support][openrccgv2] or the [libcgroup CLI][libcg]. If you want to protect GoToSocial in cases where your system is experiencing memory pressure, look at [`memory.low`][cgv2mem].
|
||||||
|
|
||||||
|
[cgv2]: https://www.kernel.org/doc/html/latest/admin-guide/cgroup-v2.html
|
||||||
|
[systemdcgv2]: https://www.freedesktop.org/software/systemd/man/latest/systemd.resource-control.html
|
||||||
|
[openrccgv2]: https://wiki.gentoo.org/wiki/OpenRC/CGroups
|
||||||
|
[libcg]: https://github.com/libcgroup/libcgroup/
|
||||||
|
[cgv2mem]: https://docs.kernel.org/admin-guide/cgroup-v2.html#memory-interface-files
|
||||||
|
|
||||||
## Ports
|
## Ports
|
||||||
|
|
||||||
GoToSocial needs ports `80` and `443` open.
|
GoToSocial needs ports `80` and `443` open.
|
||||||
|
|
Loading…
Reference in a new issue