Skip to content

Conversation

@Xe
Copy link
Contributor

@Xe Xe commented Sep 12, 2025

Ref #1103

Previously there was a lock convoy (thundering herd around mutices) when using the bbolt store while your service is being hammered by requests. This changes the bbolt store to use the Actor pattern instead of having a cage match over the database lock. Notably, this does serialize getting, setting, and deleting keys, but that's probably fine for now. If this becomes an issue, we can change how actorify works to make it spawn multiple actor threads.

image

At this point the main CPU use in high request pressure scenarios is the garbage collector. This does have an impact on the response time of services proxied by Anubis, however this is a bit of a non-issue because in such a scenario Anubis is absorbing the impact instead of the target service. This will be fixed by better using buffer pools.

Checklist:

  • Added a description of the changes to the [Unreleased] section of docs/docs/CHANGELOG.md
  • Added test cases to the relevant parts of the codebase
  • Ran integration tests npm run test:integration (unsupported on Windows, please use WSL)
  • All of my commits have verified signatures

@Xe Xe self-assigned this Sep 12, 2025
check-spelling run (pull_request) for Xe/actorify

Signed-off-by: check-spelling-bot <[email protected]>
on-behalf-of: @check-spelling <[email protected]>
@Xe Xe enabled auto-merge (squash) September 12, 2025 18:34
@Xe Xe merged commit 401e18f into main Sep 12, 2025
13 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants