You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Bug#36796808 scalability of HTTP request handling is limited
The http-request router doesn't scale to large number of parallel
requests. At 32 parallel connections handling GET requests to
/no-such-file, the requests per seconds is more or less the same as at
16 parallel connections (on a 128 core machine).
Running `perf` shows that a lot time is spent in the mutex of
HttpRequestRouter::find_route_handler().
Change
======
- changed the std::mutex around the request-handlers into a
std::shared_mutex to allow parallel reads
Requests/s over parallel connections:
+----+----------+----------+-------+
| | Before | After | Diff |
+----+----------+----------+-------+
| 1 | 11483.5 | 11703.0 | +2% |
| 2 | 23964.0 | 24591.0 | +2% |
| 4 | 39662.5 | 41094.5 | +3% |
| 8 | 72266.5 | 76064.0 | +5% |
| 16 | 86481.0 | 148098.5 | +72% |
| 32 | 98067.5 | 289619.0 | +195% |
| 64 | 102125.5 | 504629.0 | +394% |
+----+----------+----------+-------+
Change-Id: I1481d7700182c67e2a83d9408455b4980615d759
0 commit comments