-
Notifications
You must be signed in to change notification settings - Fork 851
add proxy.config.http.cache.max_open_write_retry_timeout parameter #8591
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
Conversation
6f7b816 to
d97b866
Compare
|
[approve ci rocky] |
|
@SolidWallOfCode is going to try to take a look at this |
|
@cmcfarlen is going to take a look at this |
cmcfarlen
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Check the logic on the read retry assert.
cmcfarlen
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
lgtm after removing the backward logic.
|
We've been running with this patch in prod but disabled for a bit now. The last squash had some changes from when I ran tests using docker containers, i removed a small optimization that missed evaluating an open_write increment. |
bryancall
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Based on @cmcfarlen review
The current cache write lock retries work by spinning N times at ms intervals, defined by
proxy.config.http.cache.max_open_write_retries(default 1) andproxy.config.http.cache.open_read_retry_time(default 10ms).While performing synthetic load testing with an origin that still accepts connections but stalls, we encountered larger than expected transaction ttms. This was caused by the retry time space going far beyond the configured 10ms.
Using the following setting I was getting too much variation in time spent spinning on the write lock. Anywhere from 1.5s to 8s.
So I added this millisecond timeout/deadline:
When set this timeout is used in preference to the sloppy open_write_retries * open_read_retry_time