-
Notifications
You must be signed in to change notification settings - Fork 9.8k
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
fix https-> ConcurrentMaxStream bug #13985
Conversation
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.
Have you tried to use other etcd versions to verify if issue introduced in v3.5.3 and not any other version? From surface I don't see any reason why v3.5.3 would have introduced this limitation.
Have you investigated why there are so many requests blocked? I would like to first understand if there was any changes in client/server that causes us to require so many concurrent streams.
I don't think this a proper fix, as it doesn't identify the root cause, but tries to fix a symptom.
Unbound number of connections is likely to cause:
Please use 'debug' interface (pprof) or SIGSEV to check what code the connections are being stack on. |
if you disable https,it work good。 Example: |
Codecov Report
@@ Coverage Diff @@
## main #13985 +/- ##
==========================================
- Coverage 74.99% 74.73% -0.27%
==========================================
Files 447 447
Lines 37166 37170 +4
==========================================
- Hits 27874 27779 -95
- Misses 7523 7599 +76
- Partials 1769 1792 +23
Flags with carried forward coverage won't be shown. Click here to find out more.
Continue to review full report at Codecov.
|
ulimited grpc streams is first introduced at #8238, but it's not working under http2 connection when tls enabled |
Comments:
It will be helpful if grpc/grpc-go experts can provide comments here. @menghanl @iamqizhao @dfawley |
I assume it's because of our layout: we have What I don't understand is:
My recommendation and top of Benjamin's:
|
The reason is etcd creates a new goroutine for gRPC server in |
the |
The point is the gRPC server can receive client requests directly when creating dedicate goroutines just as I pointed out at serve.go#L129; in other words, it doesn't go through the |
@YANGJINJUE could you update this PR per above comments? |
@YANGJINJUE Please update this PR per comments issuecomment-1109346863 and issuecomment-1109512194 |
@YANGJINJUE Please resolve the following comments:
|
Sorry but I have not get a clue on the |
@YANGJINJUE @ahrtr Hello there, After having tested this PR and proving that it solves our problem.
It will be nice if this PR can be merge as soon as possible. :) |
how to reopen the pull request, see the new pull request fix https server MaxConcurrentStream |
when etcd enable https,many requests will blocked,because of etcd->server.go use a default ConcurrentMaxStream:250.
Fix : I set MaxConcurrentStreams: math.MaxUint32,it work good,we haved deploy the etcd-fix in production.