Details
-
Task
-
Status: Open
-
Major
-
Resolution: Unresolved
-
8.10
-
None
-
None
-
None
Description
The HTTP/2 client for internode communication has some serious bottleneck when the system is at a load. For the same scenario, the HTTP1 client performs much better.
Here's how to reproduce the test:
git clone https://github.com/fullstorydev/solr-bench
mvn clean compile assembly:single
./cleanup.sh && ./stress.sh http2-bug.json
^ This will run a stress test scenario using the HTTP1 client. After running this, change this line from http1=true to http1=false and re-run the test: https://github.com/fullstorydev/solr-bench/blob/master/http2-bug.json#L92
I ran this test on my AMD Ryzen 5700G, 64GB RAM machine. It has 8 cores/16 threads. The test with http1=true passes in about 30-40 minutes. The test with http1=false hangs indefinitely, with queries getting timed out all the time and the system experiencing some hang/stuck. All queries are sent to the node at port 50000, where we're changing the client type.
Test plan is here: https://github.com/fullstorydev/solr-bench/blob/master/http2-bug.json
Attachments
Issue Links
- is part of
-
SOLR-16099 HTTP Client threads can hang in Jetty's InputStreamResponseListener when using HTTP2 - impacts intra-node communication
- Closed