[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [libmicrohttpd] Any HTTP Performance Benchmark Comparison for Microh
From: |
Evgeny Grin |
Subject: |
Re: [libmicrohttpd] Any HTTP Performance Benchmark Comparison for Microhttpd with Go/Nodejs HTTP Servers |
Date: |
Tue, 20 Jun 2023 20:39:02 +0300 |
User-agent: |
Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101 Thunderbird/102.12.0 |
Hi Forrest,
The real benchmark-testing of web-servers is a tricky thing.
You should consider:
* real-live scenarios. Ideally it should be run over the real network,
because the loopback traffic is handled differently by kernels.
* very fast client. Ideally very dumb. Otherwise you may test your
client performance, not the server performance.
* Multiple scenarios instead of single one: small/large requests with
small/large responses (4 combinations), single request per connection /
multiple requests per connections. They all have real-world usage and
they may have different levels of performance.
* Measure different parameters: the latency of the first response, the
latency of the next responses, the total throughput in terms of number
of requests per second and number of bytes per second. They are all
important for different users.
* Test with single thread of the requests and with multiple threads of
the requests.
* Check amount of used system resources. For some users they could be
critical.
* Use different compiler and compiler settings (when applicable). The
'-O3' may have worse speed compared to '-O2'. LTO typically improve the
results, but could have negative effect as well.
* Analyse measured data not only be averaging, but also use
95-percentile for min/max values.
* Repeat the same tests on several platforms, for example on GNU/Linux,
FreeBSD and W32.
For the client I have the initial framework partially implemented in
src/microhttpd/test_client_put_stop.c, however it does not ready for the
response testing.
The article has a link to third-party MHD mirror. The the moment of
article date the mirror had 5 years old version. Currently MHD is
optimised heavily to minimize amount of system calls (which are costly
with context switching).
The minimal example used in test is optimised for simplicity, not for
the performance.
Unfortunately I don't have ready-to-use recipe for the proper testing. :)
--
Evgeny
On 20.06.2023 17:50, lingweicai via libmicrohttpd wrote:
Dear Experts,
I am going to develop a Web UI with Microhttpd, and to write a technical
paper. I want to show the high performance of microhttpd, but I did not
find any good supporting information on my thoughts, this link
https://tech.ssut.me/http-server-benchmark/
<https://tech.ssut.me/http-server-benchmark/> did not show good
performance of microhttpd. Who could please advise if there any
performance benchmark comparison for HTTP servers, such as microhttpd vs
go vs go (grpc/protobuf) vs nodejs ?
Thanks,
Forrest Ling
<https://a.app.qq.com/o/simple.jsp?pkgname=com.sohu.mail.client.cordova>
OpenPGP_0x460A317C3326D2AE.asc
Description: OpenPGP public key
OpenPGP_signature
Description: OpenPGP digital signature