Domino on Linux/Unix, Troubleshooting, Best Practices, Tips and more ...

 
alt

Daniel Nashed

 

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

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

Links

    Archives


    • [HCL Domino]
    • [Domino on Linux]
    • [Nash!Com]
    • [Daniel Nashed]