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

Optimise Websocket performance (again) #1658

Merged
merged 4 commits into from
Jan 15, 2025
Merged

Optimise Websocket performance (again) #1658

merged 4 commits into from
Jan 15, 2025

Conversation

essen
Copy link
Member

@essen essen commented Dec 19, 2024

WIP

@essen
Copy link
Member Author

essen commented Dec 19, 2024

Relevant: #1646

@essen
Copy link
Member Author

essen commented Jan 14, 2025

I have ran autobahntestsuite locally and it passes. Just a matter of getting the Cowlib changes merged and rebasing all this.

essen added 4 commits January 15, 2025 13:28
It benchmarks binary, ascii, mixed and japanese data
using Websocket and Websocket over HTTP/2.

HTTP/2 options get set to ensure that performance is
better than the default HTTP/2 options.

It switches to Gun and Ranch branches that include
fixes that are required for tests to complete successfully.
`perf` has shown that Cowboy spends a lot of time
cancelling and starting this timer. Instead of resetting
for every data received, we now only reset a field in the
state.

Before it was working like this:

- start idle timeout timer
- on trigger, close the connection
- on data, cancel and start again

Now it's working like this:

- start idle timeout timer for a tenth of its duration, with tick number = 0
- on trigger, if tick number != 10
  - start the timer again, again for a tenth of its duration
  - increment tick number
- on trigger, if tick number = 10
  - close the connection
- on data, set tick number to 0
Following the same strategy as Websocket described in
commit cbed21c383e4cebb7df5a0a8b81f18c1738bef3e

Gains are comparable as far as Websocket over HTTP/2
is concerned.
@essen essen force-pushed the optimise-websocket branch from f514994 to 818b448 Compare January 15, 2025 12:31
@essen essen merged commit 818b448 into master Jan 15, 2025
37 of 38 checks passed
@essen
Copy link
Member Author

essen commented Jan 15, 2025

Merged!!

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.

1 participant