Tune Domino HTTP connections
Daniel Nashed – 22 May 2023 07:49:47
When performing performance tests with a new tool I wrote based on LibCurl, I noticed many connections in network TIME_WAIT.
It turned out I had persistent connections enabled. But the value was set to low on the server.
Other servers with higher values, had much less TIME_WAIT sessions.
Performing some basic load test using a remote client, it turned out that for a larger number of HTTP requests in a short time, this setting can improve your Domino HTTP server performance.
This also reduces the number of TCP/IP sessions opened.
Most of my servers did already use the following values -- The default setting would be 5 requests, which is a bit too low.
HTTP persistent connection: Enabled
Maximum requests per persistent connection: 100
---
Description: Specify the maximum number of HTTP requests that can be handled on one persistent connection. The default is 5.
Reference: https://help.hcltechsw.com/domino/12.0.2/admin/tune_specifyingnetworktimeoutsonthewebserver_t.html
Simple Test Setup
I had a very simple setup for my quick test. The tool ran the following load:
Threads | 10 |
Requests per thread | 1000 |
Total Transfer | 56 MB |
Data/Req | 5887 bytes |
Which resulted in the following performance values:
Test | Average request time (ms) | Total run-time (sec) |
5 requests per connection | 180 | 200 |
10 requests per connection | 97 | 103 |
100 requests per connection | 81 | 83 |
TLS connection | 187 | 207 |
TLS Sessions
One important side note is that TLS/SSL sessions work differently. A TLS/SSL session has way higher overhead than establishing a new TCP/IP session.
Therefore the TLS/SLL stack uses TLS session resumption and tries to reuse sessions as much as it can.
You can see the TLS performance with a ECDSA NIST P-256 key in the table as reference.
Log output from SSL_LOG_SUCCESS=1
TLS1.2 resumed 79.194.8.70 (52459) -> 172.18.0.3 (443) - ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 (0xC02C)
Conclusion
You should really double check, if your Domino HTTP server has persistent connections enabled and in most cases you should really increase value of the request at least to 40.
- Comments [5]
1Christian Henseler 22.05.2023 10:35:41 Tune Domino HTTP connections
With most HTTP-sessions being TLS encrypted nowadays, are there other parameters improving performance, when - as I understand your post - TLS sessions are reused automagically without any additional tuning.
Does the maximum requests per persistent connection parameter affect also TLS session?
Thanks in advance!
2Tommy Valand 22.05.2023 12:26:28 Tune Domino HTTP connections
Thanks for sharing :)
364bit 26.05.2023 2:26:08 Tune Domino HTTP connections
According to link below, persistent connections require more server overhead than connections that are limited by network activity.
https://ds-infolib.hcltechsw.com/ldd/dominowiki.nsf/xpDocViewer.xsp?lookupName=Administering+IBM+Domino+9.0.1+Social+Edition#action=openDocument&res_title=Specifying_network_timeouts_on_the_Web_serverd901&content=pdcontent
Is it recommended for HTTP persistent connection to be enabled?
It would be interesting to have a performance comparison for disabling HTTP persistent connection.
4Daniel Nashed 26.05.2023 5:20:12 Tune Domino HTTP connections
Dear 64bit,
It would be nice to have clear names when communicating on my blog.
Are you really quoting 9.0.1 documentation?
Of course this causes some minimal server overhead. But from scalability point of view creating new network connections (not talking about TLS sessions, which have quite higher overhead on CPU for a new session) is way more overhead. As I have shown the performance for the request are way better on the client side. Without having a benchmark on the server side, I am pretty sure the additional memory overhead is worth it also on server side.
This isn't anything I would do a load test for. It's pretty obvious this has better performance and in total better resource usage.
But if you do a benchmark, let us know what you find out!
5Jason Yap 31.05.2023 10:12:26 Tune Domino HTTP connections
Dear Daniel
Thank you for your sharing all these while, they are very informative and helpful for us.
Apologies for my previous post, I should have use clear name here. I am afraid I am not able to perform a benchmark as I am not familiar in this.
Please ignore the earlier link. I manage to find the article that I stumbled upon some time ago which recommends to disable persistent connection for recent Domino releases and this is confusing.
https://support.hcltechsw.com/csm?id=kb_article&sys_id=df96f34c1b69b30083cb86e9cd4bcb92