Squashed commit of the following: commitb5c55faf98Author: Neil Alexander <neilalexander@users.noreply.github.com> Date: Fri Jul 1 12:00:32 2022 +0100 Version 0.8.9 (#2549) * Version 0.8.9 * Update changelog commitb50a24c666Author: Neil Alexander <neilalexander@users.noreply.github.com> Date: Fri Jul 1 10:54:07 2022 +0100 Roomserver producers package (#2546) * Give the roomserver a producers package * Change init point * Populate ACLs API * Fix build issues * `RoomEventProducer` naming commit89cd0e8fc1Author: Till <2353100+S7evinK@users.noreply.github.com> Date: Fri Jul 1 11:49:26 2022 +0200 Try to fix backfilling (#2548) * Try to fix backfilling * Return start/end to not confuse clients * Update GMSL * Update GMSL commit086f182e24Author: Neil Alexander <neilalexander@users.noreply.github.com> Date: Fri Jul 1 09:50:06 2022 +0100 Disable WebAssembly builds for now commit54bed4c593Author: Neil Alexander <neilalexander@users.noreply.github.com> Date: Fri Jul 1 09:37:54 2022 +0100 Blacklist `Guest users can join guest_access rooms` test until it can be investigated commit561c159ad7Author: Till <2353100+S7evinK@users.noreply.github.com> Date: Thu Jun 30 12:34:37 2022 +0200 Silence presence logs (#2547) commit519bc1124bAuthor: Neil Alexander <neilalexander@users.noreply.github.com> Date: Wed Jun 29 15:29:39 2022 +0100 Add `evacuateUser` endpoint, use it when deactivating accounts (#2545) * Add `evacuateUser` endpoint, use it when deactivating accounts * Populate the API * Clean up user devices when deactivating * Include invites, delete pushers commit2dea466685Author: Neil Alexander <neilalexander@users.noreply.github.com> Date: Wed Jun 29 12:32:24 2022 +0100 Return an error if trying to invite a malformed user ID (#2543) commit2086992cafAuthor: Till <2353100+S7evinK@users.noreply.github.com> Date: Wed Jun 29 10:49:12 2022 +0200 Don't return `end` if there are not more messages (#2542) * Be more spec compliant * Move lazyLoadMembers to own method commit920a20821bAuthor: Jean Lucas <jean@4ray.co> Date: Mon Jun 27 04:15:19 2022 -0400 Fix nats.go commit (#2540) Signed-off-by: Jean Lucas <jean@4ray.co> commit7120eb6bc9Author: Neil Alexander <neilalexander@users.noreply.github.com> Date: Wed Jun 15 14:27:07 2022 +0100 Add `InputDeviceListUpdate` to the keyserver, remove old input API (#2536) * Add `InputDeviceListUpdate` to the keyserver, remove old input API * Fix copyright * Log more information when a device list update fails commit1b90cc9536Author: Till <2353100+S7evinK@users.noreply.github.com> Date: Wed Jun 15 12:50:02 2022 +0200 Fix rare panic when returning user devices over federation (#2534) commit4c2a10f1a6Author: Neil Alexander <neilalexander@users.noreply.github.com> Date: Mon Jun 13 15:11:10 2022 +0100 Handle state before, send history visibility in output (#2532) * Check state before event * Tweaks * Refactor a bit, include in output events * Don't waste time if soft failed either * Tweak control flow, comments, use GMSL history visibility type commitc500958583Author: Emanuele Aliberti <dev@mtka.eu> Date: Mon Jun 13 13:08:46 2022 +0200 generic CaddyFile in front of Dendrite (monolith) (#2531) for Caddy 2.5.x Co-authored-by: emanuele.aliberti <emanuele.aliberti@mtka.eu> commite1136f4d3eAuthor: Till Faelligen <davidf@element.io> Date: Mon Jun 13 11:46:59 2022 +0200 Make the linter happy again commit0a7f7dc716Author: Neil Alexander <neilalexander@users.noreply.github.com> Date: Mon Jun 13 10:16:30 2022 +0100 Add `--difference` to `resolve-state` tool commit89d2adadbdAuthor: Neil Alexander <neilalexander@users.noreply.github.com> Date: Fri Jun 10 10:58:04 2022 +0100 Attempt to raise the file descriptor limit at startup (#2527) commit1030072285Author: Neil Alexander <neilalexander@users.noreply.github.com> Date: Fri Jun 10 10:18:32 2022 +0100 Rename the page to "Optimise your installation" commit16ed1633b6Author: Neil Alexander <neilalexander@users.noreply.github.com> Date: Fri Jun 10 10:15:14 2022 +0100 Highlighting in docs commite2a64773ceAuthor: Neil Alexander <neilalexander@users.noreply.github.com> Date: Fri Jun 10 10:14:15 2022 +0100 Add new next steps page to the documentation commit660f7839f5Author: Till <2353100+S7evinK@users.noreply.github.com> Date: Thu Jun 9 18:38:07 2022 +0200 Correctly redact events over federation (#2526) * Ensure we check powerlevel/origin before redacting an event * Add passing test * Use pl.UserLevel * Make check more readable, also check for the sender
2.2 KiB
| title | parent | has_toc | nav_order | permalink |
|---|---|---|---|---|
| Optimise your installation | Installation | true | 10 | /installation/start/optimisation |
Optimise your installation
Now that you have Dendrite running, the following tweaks will improve the reliability and performance of your installation.
File descriptor limit
Most platforms have a limit on how many file descriptors a single process can open. All connections made by Dendrite consume file descriptors — this includes database connections and network requests to remote homeservers. When participating in large federated rooms where Dendrite must talk to many remote servers, it is often very easy to exhaust default limits which are quite low.
We currently recommend setting the file descriptor limit to 65535 to avoid such issues. Dendrite will log immediately after startup if the file descriptor limit is too low:
level=warning msg="IMPORTANT: Process file descriptor limit is currently 1024, it is recommended to raise the limit for Dendrite to at least 65535 to avoid issues"
UNIX systems have two limits: a hard limit and a soft limit. You can view the soft limit
by running ulimit -Sn and the hard limit with ulimit -Hn:
$ ulimit -Hn
1048576
$ ulimit -Sn
1024
Increase the soft limit before starting Dendrite:
ulimit -Sn 65535
The log line at startup should no longer appear if the limit is sufficient.
If you are running under a systemd service, you can instead add LimitNOFILE=65535 option
to the [Service] section of your service unit file.
DNS caching
Dendrite has a built-in DNS cache which significantly reduces the load that Dendrite will place on your DNS resolver. This may also speed up outbound federation.
Consider enabling the DNS cache by modifying the global section of your configuration file:
dns_cache:
enabled: true
cache_size: 4096
cache_lifetime: 600s
Time synchronisation
Matrix relies heavily on TLS which requires the system time to be correct. If the clock drifts then you may find that federation no works reliably (or at all) and clients may struggle to connect to your Dendrite server.
Ensure that the time is synchronised on your system by enabling NTP sync.