Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

/state_ids is slow to respond #13620

Open
matrixbot opened this issue Dec 20, 2023 · 0 comments
Open

/state_ids is slow to respond #13620

matrixbot opened this issue Dec 20, 2023 · 0 comments

Comments

@matrixbot
Copy link
Collaborator

matrixbot commented Dec 20, 2023

This issue has been migrated from #13620.


/state_ids is slow to respond. The 99th percentile is almost solidly above 10s (we can't tell how high), and 5s for the 75th percentile 🐢. Seems like this should be much faster since we just need to dump out what we have in the database (simplification).

Being slow at /state_ids means slowing down /messages whenever we backfill and need to figure out the state at an event.

https://grafana.matrix.org/d/dYoRgTgVz/messages-timing?orgId=1&from=1661359694721&to=1661381294721&viewPanel=197
FederationStateIdsServlet response time, 75th percentile is 5.32s


As an example for #matrix:matrix.org, /state_ids took 30s for this endpoint to respond. We don't know what t2bot.io is doing but chances are we can improve things for the whole federation:

Because matrix.org is also slow to respond and we can actually trace it:

(also, what's that mystery gap at the end after we encode the JSON response (encode_json_response)?) (update: see #17722)

Related to:

Rate limiter

We could gain an easy ~1s, by tuning the rate limiter to not sleep as much if our servers can handle it.

https://grafana.matrix.org/d/dYoRgTgVz/messages-timing?orgId=1&from=1661358785681&to=1661380385682&viewPanel=204
Rate limit stats in grafana, 90th percentile is at 669ms

Using less /state_ids

Might be better if we could work with less state events every time /state_ids is called so it might be nice to have a way to get the delta between two events (the unknown event and the event where your server already has state), see matrix-org/synapse#13618

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant