Hi Forrest,The tool for performance replies is shaping, I have alpha version and made some test with suggested wrk.
Here are the initial results: ----------------------------------------- $ wrk -c100 -d30s -t4 http://127.0.0.1:39683 Running 30s test @ http://127.0.0.1:39683 4 threads and 100 connections Thread Stats Avg Stdev Max +/- Stdev Latency 143.75us 57.42us 1.93ms 69.18% Req/Sec 102.70k 2.45k 108.02k 70.92% 12262004 requests in 30.00s, 479.45MB read Requests/sec: 408721.22 Transfer/sec: 15.98MB
$ wrk -c100 -d30s -t8 http://127.0.0.1:39683 Running 30s test @ http://127.0.0.1:39683 8 threads and 100 connections Thread Stats Avg Stdev Max +/- Stdev Latency 110.83us 251.91us 23.18ms 99.77% Req/Sec 101.68k 15.28k 130.87k 65.28% 24297494 requests in 30.10s, 0.93GB read Requests/sec: 807215.36 Transfer/sec: 31.56MB $ wrk -c400 -d30s -t8 http://127.0.0.1:39683 Running 30s test @ http://127.0.0.1:39683 8 threads and 400 connections Thread Stats Avg Stdev Max +/- Stdev Latency 387.42us 159.03us 13.43ms 74.39% Req/Sec 109.04k 13.31k 133.24k 59.58% 26036491 requests in 30.04s, 0.99GB read Requests/sec: 866619.04 Transfer/sec: 33.89MB $ wrk -c400 -d30s -t4 http://127.0.0.1:39683 Running 30s test @ http://127.0.0.1:39683 4 threads and 400 connections Thread Stats Avg Stdev Max +/- Stdev Latency 482.26us 266.28us 25.07ms 94.71% Req/Sec 108.71k 4.57k 120.72k 80.42% 12979154 requests in 30.06s, 507.49MB read Requests/sec: 431811.63 Transfer/sec: 16.88MB $ wrk -c1000 -d30s -t4 http://127.0.0.1:39683 Running 30s test @ http://127.0.0.1:39683 4 threads and 1000 connections Thread Stats Avg Stdev Max +/- Stdev Latency 1.17ms 475.29us 29.10ms 70.65% Req/Sec 101.63k 8.46k 126.45k 81.94% 12121757 requests in 30.05s, 473.97MB read Requests/sec: 403322.87 Transfer/sec: 15.77MB $ wrk -c1000 -d30s -t8 http://127.0.0.1:39683 Running 30s test @ http://127.0.0.1:39683 8 threads and 1000 connections Thread Stats Avg Stdev Max +/- Stdev Latency 1.20ms 368.89us 20.19ms 88.20% Req/Sec 89.15k 8.66k 116.86k 71.04% 21283031 requests in 30.09s, 832.18MB read Requests/sec: 707233.60 Transfer/sec: 27.65MB ----------------------------------------- I'll let you know when tool is published. -- Evgeny On 26.06.2023 3:52, lingweicai via libmicrohttpd wrote:
Thanks for your reply and the information. I setup my environmement to run the benchmark with "wrk -t 4 -c 1000 -d 10s" for go and microhttpd.I configured libmicrohttp with epoll and tls. and run the benchmark with src/example/benchmark, the results are :[root@oe23 examples]# wrk -t 4 -c 1000 -d 10s http://localhost:80/ Running 10s test @ http://localhost:80/ 4 threads and 1000 connections Thread Stats Avg Stdev Max +/- Stdev Latency 9.11ms 12.81ms 240.35ms 94.05% Req/Sec 19.52k 4.15k 31.42k 66.75% 779860 requests in 10.10s, 110.07MB read Requests/sec: 77221.73 Transfer/sec: 10.90MBI also install golang, and run hello test like ( HTTP Server Benchmark (ssut.me) <https://tech.ssut.me/http-server-benchmark/> ), the results :[root@oe23 ~]# wrk -t 4 -c 1000 -d 10s http://localhost:10000/ Running 10s test @ http://localhost:10000/ 4 threads and 1000 connections Thread Stats Avg Stdev Max +/- Stdev Latency 5.98ms 5.81ms 75.36ms 84.23% Req/Sec 47.99k 16.21k 104.91k 73.35% 1907367 requests in 10.07s, 232.83MB read Requests/sec: 189439.19 Transfer/sec: 23.12MBThe microhttp results are too slow. I looked the code of src/microhttpd/test_client_put_stop.c, but I dont know how to build it to a benchmark for a test with wrk.any suggestions to build a "hello world" with Microhttp to compete with go in "wrk" ? though the results of "ab" of microhttp is better than go run "ab", as more benchmark is using "wrk", less mentioned in "ab", for example, "ab" is not on the list Top 10 HTTP Benchmarking and Load Testing Tools (thechief.io) <https://thechief.io/c/editorial/top-10-http-benchmarking-and-load-testing-tools/>Thanks, Forrest
OpenPGP_0x460A317C3326D2AE.asc
Description: OpenPGP public key
OpenPGP_signature
Description: OpenPGP digital signature