|
|
|
|
|
by MDA2AV
68 days ago
|
|
I ran into some lua erros and fixed them, eventually I got it running with -shutwr but the results are basically impossible ----------- Summary ----------
Successful connections: 8 out of 8 (0 failed).
Total bytes sent . . . . . 2599999960.00 B
Total bytes received . . . 82520.00 B
Benchmark duration . . . . 85.94 ms
Send throughput . . . . . 30252779546.89 B/sec
Receive throughput . . . . 960176.69 B/sec
Aggregate req/second . . . 93085476.96 The received data is too low. Also 93 million requests per second, the only way this is possible is due the fact that the load generator is not waiting for the server response and processing it. But I guess this is expectable since there might be some issues as I am using a much more recent kernel than you did when building this I used -n 10000000 (10M) |
|
If you only received ~80KB for 10M requests the server probably terminated the connection early before processing all requests (like nginx does after 1k requests on one TCP keepalive socket if you use the default configuration). Check the responses-XXX.txt files to see what happened. You then need to either adjust the server configuration or use multiple sockets with the max keepalive requests the server can handle.
If you run this tool on the same machine as the server process, the requests file is likely held in the file system cache (RAM and shared by all threads) and every recv() call by the server under test is essentially a memory copy at the speed of the machine's memory bandwidth, which can easily be >>10GB/s or millions of requests per second per connection. This is also way faster than typical servers can even parse HTTP/1.
But highly optimized servers running straight HTTP/1 without TLS or backend logic on multiple threads should absolutely hit multiple millions of requests per second with this tool. Researching how fast an HTTP/1 server can get was the reason I made this in the first place.