Comments (11)
I'm going to mark this bug as fixed. Please open if it flares up again.
from cmux.
ping @soheilhy
from cmux.
Please attach a pprof callgraph and I'll take a look. MatchWithWriters
has higher CPU usage as it's doing a lot more work. It's not recommended to use it unless you really have broken clients that need this matcher.
from cmux.
@soheilhy , I work with @sadlil . Here is a callgraph of this issue. It will be great if you can take a look.
from cmux.
I have the same problem on latest master branch: bb79a83465015a27a175925ebd155e660f55e9f1
.
After I stopped using MatchWithWriters
, high CPU utilization was solved.
Is anyone working on this?
from cmux.
I'm not aware of any new issues. Do you have a profile or a call graph?
from cmux.
Do you have a profile or a call graph?
Not now. I will try to create a PoC.
Please wait a few days.
from cmux.
@soheilhy Perhaps when you send empty settings the clients can't handle that correctly, one can see that when debugging the server with GODEBUG=http2debug=2
Those 4 lines of code are in infinite loop
2018/01/29 17:19:31 http2: Framer 0xc4201fc2a0: wrote SETTINGS len=0
2018/01/29 17:19:31 http2: Framer 0xc420264000: read SETTINGS len=0
2018/01/29 17:19:31 http2: Framer 0xc420264000: wrote SETTINGS flags=ACK len=0
2018/01/29 17:19:31 http2: Framer 0xc4201fc2a0: read SETTINGS flags=ACK len=0
2018/01/29 17:19:31 http2: Framer 0xc4201fc2a0: wrote SETTINGS len=0
2018/01/29 17:19:31 http2: Framer 0xc420264000: read SETTINGS len=0
2018/01/29 17:19:31 http2: Framer 0xc420264000: wrote SETTINGS flags=ACK len=0
2018/01/29 17:19:31 http2: Framer 0xc4201fc2a0: read SETTINGS flags=ACK len=0
2018/01/29 17:19:31 http2: Framer 0xc4201fc2a0: wrote SETTINGS len=0
2018/01/29 17:19:31 http2: Framer 0xc420264000: read SETTINGS len=0
2018/01/29 17:19:31 http2: Framer 0xc420264000: wrote SETTINGS flags=ACK len=0
2018/01/29 17:19:31 http2: Framer 0xc4201fc2a0: read SETTINGS flags=ACK len=0
2018/01/29 17:19:31 http2: Framer 0xc4201fc2a0: wrote SETTINGS len=0
2018/01/29 17:19:31 http2: Framer 0xc420264000: read SETTINGS len=0
2018/01/29 17:19:31 http2: Framer 0xc420264000: wrote SETTINGS flags=ACK len=0
2018/01/29 17:19:31 http2: Framer 0xc4201fc2a0: read SETTINGS flags=ACK len=0
2018/01/29 17:19:31 http2: Framer 0xc4201fc2a0: wrote SETTINGS len=0
Both client and server are in go, the grpc-gateway is actually creating a local connection to the server so when it translates REST API calls the code call gRPC endpoint locally.
from cmux.
I think you've found the bug. Thank you.
Can you give the following patch a try? I think it should fix the issue.
e496b35
from cmux.
@soheilhy That solves it.
Thanks
from cmux.
Great thank you for the confirmation.
from cmux.
Related Issues (20)
- Upgrade the x/net version in dependencies?
- Server unexpectedly doesn't receive traffic from cmux.Any() HOT 1
- Udp support?
- Add benchmarks
- badly-behaved client can deadlock server stopping HOT 3
- Cannot get Matchers to mux h2c gRPC and HTTP2(REST) requests HOT 4
- It's hard to extend protocol HOT 3
- how to write client codeto gprc connect HOT 2
- Doesn't work with grpc-go's hello world example HOT 2
- Pull In Downstream Fixes HOT 1
- Cannot check closed error with errors.Is HOT 1
- Multiplexing gRPC and Prometheus metrics services using Google Cloud Run
- Matching based on URL HOT 1
- Cmux example HOT 1
- Close not working properly on gRPC graceful stop HOT 1
- Multiplexing gRPC & HTTP handlers with H2C+Prior Knowledge HOT 4
- socks5 matcher not working HOT 2
- http2 matcher not working with net/http HOT 2
- I don't understand why calling source.Read() might block?
- HTTP1Fast matcher omits PATCH HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from cmux.