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

ra_server: Add a new last_applied state query #462

Merged
merged 2 commits into from
Jul 26, 2024

Conversation

dumbbell
Copy link
Member

Why

ra_server_proc was querying overview up until now to get the last applied index as part of the handling of conditions for queries.

This call was very expensive, leading to really poor performance of conditional queries (like a whopping 3000 times slower).

How

We add a dedicated state query to get the last_applied value only.

dumbbell added 2 commits July 25, 2024 18:35
[Why]
`ra_server_proc` was querying `overview` up until now to get the last
applied index as part of the handling of conditions for queries.

This call was very expensive, leading to really poor performance of
conditional queries (like a whopping 3000 times slower).

[How]
We add a dedicated state query to get the `last_applied` value only.
…eded

[Why]
If the query has a condition, the result of the call to
`determine_leader/2` is not used. Furthermore, it is called again by
another function further down the line.
@dumbbell dumbbell requested a review from kjnilsson July 25, 2024 17:14
@dumbbell dumbbell self-assigned this Jul 25, 2024
@dumbbell dumbbell marked this pull request as ready for review July 26, 2024 07:52
@dumbbell dumbbell requested a review from the-mikedavis July 26, 2024 10:05
@dumbbell dumbbell merged commit e95ab7b into main Jul 26, 2024
9 checks passed
@dumbbell dumbbell deleted the fix-performance-of-query-with-condition branch July 26, 2024 15:49
@dumbbell dumbbell added this to the 2.13.6 milestone Jul 26, 2024
dumbbell added a commit to rabbitmq/khepri that referenced this pull request Jul 31, 2024
[Why]
`ra:member_overview/2` is a very expensive call.

[How]
We just need the last index and the current term from the leader and
`ra:key_metrics/2` provides this piece of information too.

The difference is huge: in my benchmark, the query rate goes from 15
queries per second to 100k. This is in association with a related change
in Ra; see rabbitmq/ra#462.
dumbbell added a commit to rabbitmq/khepri that referenced this pull request Aug 13, 2024
[Why]
`ra:member_overview/2` is a very expensive call.

[How]
We just need the last index and the current term from the leader and
`ra:key_metrics/2` provides this piece of information too.

The difference is huge: in my benchmark, the query rate goes from 15
queries per second to 100k. This is in association with a related change
in Ra; see rabbitmq/ra#462.
dumbbell added a commit to rabbitmq/khepri that referenced this pull request Aug 13, 2024
[Why]
`ra:member_overview/2` is a very expensive call.

[How]
We just need the last index and the current term from the leader and
`ra:key_metrics/2` provides this piece of information too.

The difference is huge: in my benchmark, the query rate goes from 15
queries per second to 100k. This is in association with a related change
in Ra; see rabbitmq/ra#462.
dumbbell added a commit to rabbitmq/khepri that referenced this pull request Aug 13, 2024
[Why]
`ra:member_overview/2` is a very expensive call.

[How]
We just need the last index and the current term from the leader and
`ra:key_metrics/2` provides this piece of information too.

The difference is huge: in my benchmark, the query rate goes from 15
queries per second to 100k. This is in association with a related change
in Ra; see rabbitmq/ra#462.
dumbbell added a commit to rabbitmq/khepri that referenced this pull request Aug 14, 2024
[Why]
`ra:member_overview/2` is a very expensive call.

[How]
We just need the last index and the current term from the leader and
`ra:key_metrics/2` provides this piece of information too.

The difference is huge: in my benchmark, the query rate goes from 15
queries per second to 100k. This is in association with a related change
in Ra; see rabbitmq/ra#462.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants