One of the UK's leading insurance, pension and investment companies use DominoPDF to convert Notes / Domino documents to PDF in a very high load environment.
A large number of internal users and agencies access replica Notes databases typically hosted on Domino version 8, 64-Bit, Windows Server 2003.
At any point in time a user can select a variable number of documents and mark them for conversion processing. DominoPDF is used to convert the marked documents to a single PDF file and return it to the user.
In this scenario the Domino HTTP task was being used to process requests for document data and it's this area where performance tuning becomes a priority.
Domino Server Performance
If the above conversion requests were made in real-time the large number of users meant that concurrent usage was high and the load put on the Domino server would be increased.
The Domino server document provides settings to manage multiple requests, threads and tasks, with the main areas to focus upon being HTTP Threads and the Agent Manager.
HTTP Threads
The Domino HTTP server task must have enough threads to handle the number of HTTP requests accessing the server.
You can adjust the number of HTTP server threads using the Lotus Notes Administrator client. In the server document, click Internet Protocol, then click HTTP and change the Number of active threads value.
The HTTP server task allocates all of these threads at startup time and keeps them active as long as the server is started. Do not over allocate HTTP threads as this causes the Domino server to run out of memory.
If the number of HTTP threads available are used up or “busy” the Domino HTTP server could become unresponsive and mean a user has to wait until a thread becomes available or their request times out and does not complete.
To understand whether the Domino server is running out of HTTP threads the server console command “tell http show thread state” can be used to see the current state or HTTP thread state logging can be enabled to log all requests to disk.
Agent Manager Tasks
The Agent Manager controls when agents run on a server. Every time an agent runs, it uses server resources.
You can relieve a heavily loaded Agent Manager by allowing agents to run concurrently.
To do this, modify the “Max concurrent agents” field in the Server Tasks/Agent Manager section of the Server document.
Values greater than 1 allow more than one agent to run at the same time. Valid values are 1 through 10. Default values are 1 for daytime and 2 for night time.
If agents are not run concurrently each request will be served in turn, meaning users again have to wait for their request to be processed.
DominoPDF Performance
DominoPDF also exposes settings which can be used in a high volume environment.
The UseCache=True setting tells DominoPDF to cache often-used resources, such as images, CSS files, JavaScript files, etc. and reduces the HTTP load made on the Domino server.
DominoPDF provides methods to log the conversion process and whilst this is useful in development it's not recommended in production due to the increased execution time.
Managing Server Load
In reality, the demand placed on the Domino server in real-time was too much for the Domino HTTP task and users were waiting too long for their requests to be processed.
The solution was to use scheduled Notes agents to process the requests in the background.
Once a user had marked documents for processing a scheduled agent would process all the requests in manageable “chunks” thereby reducing the immediate load placed on the Domino server.
Once documents had been converted the user would be notified that their PDF file was available, typically via e-mail, and they could collect it as appropriate.
Conclusion
Balancing Domino server load is going to be different for each companies environment, however by understanding and monitoring how requests are made and processed by the Domino server a workable solution can be reached.
Once Domino is tuned to handle requests comfortable, DominoPDF can step in and easily convert documents to PDF for storage, reporting, archiving and more!