IBM Support

Domino HTTP Active Thread recommendations

Technote (FAQ)


Question

What is the recommended maximum number of active HTTP threads for a Lotus® Domino® server? You set this value in the "Number active threads" field on the Internet Protocols - HTTP tab of the Server document.

Answer

Traveler servers

See the recommendations in for HTTP Threads in the section "Tuning performance of the server" in Administering IBM Notes Traveler
http://www-10.lotus.com/ldd/dominowiki.nsf/xpDocViewer.xsp?lookupName=Administering+IBM+Notes+Traveler+9.0.1#action=openDocument&res_title=Tuning_performance_of_the_server_A901&content=pdcontent

64-bit Domino

64-bit systems have fewer memory constraints than 32-bit systems. However, you do not want to have too many threads in order to minimize thread context switching.

Domino defaults to 40 active threads. To estimate if more threads may be required, review data from the HTTP server's statistics. After the server has been running long enough to provide a statistically significant sample of web server usage (e.g. one week), run the console command "SHOW STAT HTTP", and find the entry for "HTTP.PeakConnections". Add five to that number, and then round up to a multiple of ten. If you have a peak usage above 100 connections, round up to a multiple of 20. Do not go below 40 threads.

If performance issues are seen with the recommended setting, verify the other statistics listed in the 32-bit Domino section of this Technote are showing acceptable processing times.

32-bit Domino

Due to memory limitations and thread context switching, it is recommend that the number of active HTTP threads not exceed 64 on a single-processor server or a total of 80 threads in any multiprocessor environment. A level higher than the recommend ones can result in poor performance and server crashes. Although some platforms such as i5/OS (iSeries) can run a higher number of threads (up to 512), configuring more threads will not likely result in better performance.

Changes to the thread model in Domino 6 and later releases allow for fewer threads to perform more work. Increasing the number of threads above 80 will result in higher memory usage and might have a negative impact on context switching. The above values are the maximum recommended. You need to determine what value is best for your particular environment and applications. It is recommended that you start with the default of 40 threads and slowly increase the number (perhaps 10 at a time).

You can gather data for several statistics listed below (by periodically issuing the "show stat" command) in order to adjust the HTTP threads value for your Domino 6, Domino 7, or Domino 8 server:

  • Domino.Threads.Active.Peak (R5 and above) - indicates the peak number of concurrently executing HTTP threads performing NSF-specific requests.
  • HTTP.CurrentConnections (Domino 6 and above) - indicates the current number of connections for the HTTP server regardless of request type
  • HTTP.PeakConnections (Domino 6.0.5/6.5.4 and above) - indicates the peak number of connections since the HTTP server has started regardless of request type

These three statistics can indicate the load the server is experiencing but should not be used for determining whether the server might benefit from increasing the number of HTTP worker threads.

When deciding whether to increase the number of HTTP worker threads for your server, you should concentrate on maximizing the total throughput of the server, as opposed to the overall server load. For example, having 80 threads with an Active Thread Peak statistic of 75 might not provide any better performance than having only 40 worker threads with an active thread peak of 40. This, of course, depends on the particular requests and applications residing on the Domino server.

To determine the throughput of the server, you can calculate the average time spent processing a single request using the following statistics by dividing the RequestsProcessed statistic by the TotalRequestTime statistic:

  • HTTP.Worker.Total.RequestsProcessed (Domino 6.5.4 and above) - indicates the total number of requests processed by the HTTP worker threads
  • HTTP.Worker.Total.TotalRequestTime (Domino 6.5.4 and above) - indicates the total time taken to process all requests which have been processed by the HTTP worker threads.

Divide the RequestsProcessed by the TotalRequestTime to obtain a statistic for the total throughput of the server.

Information about the time spent servicing requests is also available in the access text log files if they are enabled, though using this method would require more work because the text logs would have to be parsed manually or by a custom script.

To appropriately set your Number Active Threads field, it is recommended to monitor the throughput of your server, as well as to monitor the average response of a simple request such as "OPTIONS *" or "GET /test.html" where test.html is a simple html page or some other small resource. If the response times for this simple request reach unacceptable levels, then you can test increasing the number of HTTP worker threads for your server. Then monitor the throughput for your server and the average response time for the simple requests to see if the server performance improves.

You can also set up a Web stress test that will mimic the anticipated (or measured) amount of traffic you expect for your applications, and use the recommendations and statistics above. Some testing results can be found in the developerWorks article referenced at the end of this document.

Note: The Domino.Threads.Active.Peak statistic shows only the high mark of concurrent NSF requests; non-NSF requests are not included in this value. Therefore, to gather peak usage values that include requests for both NSF and non-NSF resources, you can schedule outputs of the command "show stat http" on a Domino server and monitor the HTTP.Worker.TotalRequestsProcessed and HTTP.Worker.Total.TotalRequestTime statistics.

Remember that slow web server performance may be due to resource contention (e.g. multiple users attempting to update a database simultaneously), which is an issue that may need to be addressed in the design of the database or by allowing concurrent agent processing.

For additional discussion about setting the number of HTTP threads, refer to the following technical article on the developerWorks: Lotus Web site:
"Optimizing server performance: HTTP Threads settings"

Related information

Running multiple web agents/web services at the same ti
A simplified Chinese translation is available

Document information

More support for: IBM Domino
Web Server

Software version: 6.0, 6.5, 7.0, 8.0, 8.5, 9.0

Operating system(s): AIX, Linux, Solaris, Windows

Software edition: All Editions

Reference #: 1173877

Modified date: 14 September 2007


Translate this page: