Hi all,
We've just released Synapse 0.33.0! This is a major performance upgrade which speeds up /sync (i.e. receiving messages) by a factor of almost 2x! This has already made a massive difference to the CPU usage and snappiness of the matrix.org homeserver since we rolled it out a few days ago - you can see the drop in sync worker CPU just before midday on July 17th; previously we were regularly hitting the CPU ceiling (at which point everything grinds to a halt) - now we're back down hovering between 40% and 60% CPU (at the current load). This is actually fixing a bug which crept in around Synapse 0.31, so please upgrade - especially if Synapse has been feeling slower than usual recently, and especially if you are still on Synapse 0.31.
Meanwhile we have a lot of new stuff coming on the horizon - a whole new algorithm for state resolution (watch this space for details); incremental state resolution (at last!) to massively speed up state resolution and mitigate extremities build up (and speed up the synapse master process, which is now the bottleneck again on the matrix.org homeserver); better admin tools for managing resource usage, and all the Python3 porting work (with associated speedups and RAM & GC improvements). Fun times ahead!
The full changelog follows below; as always you can grab Synapse from https://github.com/matrix-org/synapse. Thanks for flying Matrix!
Synapse 0.33.0 (2018-07-19)
Bugfixes
- Disable a noisy warning about logcontexts. (#3561)
Synapse 0.33.0rc1 (2018-07-18)
Features
- Enforce the specified API for report_event. (#3316)
- Include CPU time from database threads in request/block metrics. (#3496, #3501)
- Add CPU metrics for _fetch_event_list. (#3497)
- Optimisation to make handling incoming federation requests more efficient. (#3541)
Bugfixes
- Fix a significant performance regression in /sync. (#3505, #3521, #3530, #3544)
- Use more portable syntax in our use of the attrs package, widening the supported versions. (#3498)
- Fix queued federation requests being processed in the wrong order. (#3533)
- Ensure that erasure requests are correctly honoured for publicly accessible rooms when accessed over federation. (#3546)
Misc
- Refactoring to improve testability. (#3351, #3499)
- Use
isort
to sort imports. (#3463, #3464, #3540) - Use parse and asserts from http.servlet. (#3534, #3535).
The Foundation needs you
The Matrix.org Foundation is a non-profit and only relies on donations to operate. Its core mission is to maintain the Matrix Specification, but it does much more than that.
It maintains the matrix.org homeserver and hosts several bridges for free. It fights for our collective rights to digital privacy and dignity.
Support us