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

HTTPQueueMethod=2 new default in 8.5.1

Daniel Nashed  10 October 2010 20:34:45

This setting has been around for a while and I was looking into it for a customer project.
Depending on your HTTP server requirements different strategies assigning the work make sense.
But it turned out that the old standard in R6.0 to evenly spread all the load on all available HTTP does not work well for servers with long going requests.

Specially for servers like a Traveler server this does not work well. Therefore IBM changed the standard in 8.5.1 to the queued method.
All requests are put into a queue and the requests are processed by the next free thread.
This avoids blocking situations for long going requests.

Also IBM recommends to use persistent connections also for this new standard thread mode, even the current documentation does not generally recommend it.

According to IBM it works well in most environments and it is recommend to set it.

So the good news here is that the standard has been modified to better fit current needs for most of the HTTP server scenarios.

-- Daniel



HTTPQueueMethod=0 - This setting is the default, and represents no change in queueing from the R6.0 and above. The accept thread will evenly distributed network connections to all worker threads using a round robin method. Connections are assigned to a specific thread.

HTTPQueueMethod=1 - This setting will cause the accept thread to find the worker thread that has the least number of network connections assigned to it and assign the new network connection to that worker thread. It is still possible that a new network connection may be assigned to a thread that is in the process of processing a long running request. It is recommended but not required that persistent connections are disabled when using this option to get the maximum effect. This will limit the possible wait time if a new network connection is queued to a thread that already is busy with other connections(s)

HTTPQueueMethod=2 - This setting will cause the accept thread to put the incoming network connections on a queue from with the worker threads will pull from. This is the same model as R5. It is also recommend but not required that persistent connections be disabled when using this option to get the maximum effect.

Comments

1Ulrich Krause  11.10.2010 6:30:41  HTTPQueueMethod=2 new default in 8.5.1

Thx for the info, Daniel. Still a bit confusing, because the documentation says that HTTPQueueMethod=0 "...is the default,... from the R6.0 and above."

And I think that, as there is no way to find out which method is being used, setting the method in the notes.ini explicitly could be a recommendation.

"use persistent connections" = MAILLEAVESESSIONSOPEN ?

2Ulrich Krause  11.10.2010 6:35:05  HTTPQueueMethod=2 new default in 8.5.1

re. Persistent connections.

Sorry, too ealry in the morning. Found it.

"Persistent Connections are configured using the following fields on the Internet Protocols -> HTTP tab of the Server document"

3Daniel Nashed  11.10.2010 8:57:27  HTTPQueueMethod=2 new default in 8.5.1

@Ulich, yes there is no way to find out what is acutally used. I asked the same question in my dicussion in the DP forum.

They changed it in 8.5.1 and it should say like this because it makes most sense for a busy server with potentially long going requests.

I would not set it manual and keep it the way IBM sets the default.

Also there is a statistic that you can check for concurrent requests going on.

Http.CurrentConnections gives you the current connections.

by the way there is no statistic to query the number of online HTTP users.

there is one for the other internet protocols but for HTTP the only statistic in this area is this.

"tell http show users" is not really helpful in this case.

-- Daniel

4charles ross  12.10.2012 22:55:41  HTTPQueueMethod=2 new default in 8.5.1

"tell http show thread state" can tell you some helpful info too