Tuning Tips For Lotus Domino On Solaris
Tuning Tips For Lotus Domino On Solaris
Tuning Tips For Lotus Domino On Solaris
January 2009
Introduction
This paper suggests adjustments that may improve the performance of your IBM Lotus Domino server working with the Sun Solaris operating system. Some adjustments are simple, others are relatively drastic. Some are all but mandatory, others are optional or even experimental. Some are known to have large effects, others make small differences. Most important, all these suggestions come from people who have never seen your systems and the loads they handle; in the end, you must rely on your own judgment and observations to choose the adjustments that are best for your servers. The suggestions in this thirteenth edition of Tuning Tips are current as of January 2009. They have been tested with Domino 6.5, Domino 7, Domino 8, and Domino 8.5 on Solaris 9 and Solaris 10 with most of the current processors in the UltraSPARC family. (Check the Domino release notes for information on which combinations of Domino and Solaris versions are supported by IBM, and the Solaris release notes for information on which processors each Solaris version supports.) Except as noted, the adjustments apply to all Domino and Solaris versions; suggestions that apply only to particular versions mention them explicitly. Please heed these guidelines as you work to optimize performance: Work methodically. Insofar as possible, make just one adjustment at a time. Measure the system's performance before and after each change, and rescind any change that doesn't produce a measurable improvement. Keep a log or diary of the changes made and the results observed. Solve problems. Some adjustments are suggested as remedies for specific problems; if you don't have the problem, don't make the adjustment. Making changes for their own sake is seldom helpful. Adjust gradually. When adjusting a quantitative parameter, it is usually better to make several stepwise changes in succession than to make a drastic change all at once. Different systems face different circumstances, and you may leap right past your system's best setting if you change a value too abruptly. Less is more. At each major system changehardware upgrade, software upgrade, major new application deployment, or whateverreview all previous adjustments to see whether they still apply. Don't perpetuate an old adjustment simply because we've always done it that way; a tuning that helped Domino R4.5 on Solaris 2.6 may be inappropriate for Domino 8.5 on Solaris 10. Stay informed. Read the Domino and Solaris release notes whenever you upgrade your system. The release notes often provide updated information about particular adjustments.
Monitoring Performance
Making adjustments without measuring their effects is silly: if you don't measure the system's behavior before and after a change, you won't know whether the change was a good idea, a bad idea, or merely irrelevant. This section describes some of the tools and utilities you can use to monitor your system's performance.
January 2009
the amount of data transferred, and so on. Use man iostat for more information. The vmstat nn command summarizes virtual memory activity and some CPU statistics at nn-second intervals. Monitor the sr column to keep track of the page scan rate and take action if it's consistently greater than zero (isolated spikes don't mean much, but steady scanning even at a low rate is a sign of trouble). Watch the us, sy, and id columns to see how heavily the CPUs are being used; remember that you need plenty of CPU power in reserve to handle sudden bursts of activity. Also keep track of the r column to see how many threads are contending for CPU time, and reduce the number of threads Domino uses if r remains too high. Too high depends on the number and type of CPUs in the system. Count four for each UltraSPARC III chip, eight for each UltraSPARC IV or IV+ chip, eight for each SPARC64 VI chip, eight for each active core of an UltraSPARC T1 chip, and twelve for each active core of an UltraSPARC T2 chip; the total is the approximate threshold above which r would be considered too high. Use man vmstat for more information. The mpstat nn command gives a detailed look at CPU statistics, while the netstat -i nn command summarizes network traffic. We have found these reports less useful than the first two, but they can be helpful in particular situations. Use man mpstat and man netstat for more information.
January 2009
statistics. In Domino 7 and later you can use Domino Domain Monitoring (DDM) to set thresholds for important statistics and create alerts if they are exceeded. Consider enabling Domino's Activity Logging capabilities to collect detailed records of various server activities. See the Help facility of the Domino Administrator client for information on Activity Logging and Activity Analysis.
Obsolete Adjustments
Some adjustments that were once mandatory or at least highly recommended have become obsolete with advances in Domino and Solaris. We suggest that you remove these tunings if they are present on your system.
Upgrade to Solaris 10
If you have a choice of which operating system to use for your Domino server, we strongly recommend using Solaris 10. At this writing Domino makes only limited use of the features unique to the Solaris 10 release, but it nonetheless benefits from the performance improvements to many Solaris components, particularly the TCP/IP network stack and the Unix File System (UFS). You will also find that Solaris 10 requires less tuning than earlier versions, since it is more able to adjust itself to changes in load. If upgrading to Solaris 10 is not feasible at this time (for example, if you use a Domino version earlier than 6.5), you should at the very least run Solaris 9. This release has its own set or performance enhancements, including a file system improvement that is of great help to Domino when performing maintenance activities like compacting large NSF databases. All current Solaris 9 releases have this improvement, and older versions can obtain it in the form of a patch. To verify that your Solaris 9 has the patch, run showrev -p | grep "Patch: 112233" and check that version 112233-10 or later of the patch is present. If it is missing or outdated, obtain the current version from http://sunsolve.sun.com/.
January 2009
January 2009
megabytes Domino should assign to the largest of its memory pools. Use show stat database to see whether you've allocated enough, and monitor the Database.Database.BufferPool.Peak.Megabytes value to see whether you've allocated more than Domino actually uses. CAUTION: Use either PercentAvailSysResources or NSF_Buffer_Pool_Size_MB, but do not use both unless specifically instructed to do so by IBM Support.
January 2009
incoming messages. Open or create the server's Configuration document and select the Router/SMTP tab and then the Basics sub-tab. On this form, set the Number of mail boxes field to 2. Restart Domino and issue the show server console command to verify the setting, and gradually increase the number of mailboxes if the problem persists. We have tested with as many as ten mailboxes, but saw little or no improvement beyond four.
January 2009
connection. Use this value as a starting point only. We have found that Domino's default is too high for NotesBench work, but NotesBench is not always a good imitation of real-world conditions. The best settings for your server will depend on your mail routing topology and the mail patterns of your users. Use the show stat mail and tell router show console commands to monitor the router's performance, and be alert for signs of trouble. It may turn out that you need to increase the number of transfer threads or even (as a last resort) the number of concurrent transfer threads if mail backlogs develop. NOTE: We used to suggest lowering the total number of transfer threads, in addition to reducing the number of concurrent threads. We now feel that the concurrency adjustment alone is sufficient, and suggest leaving the total number of transfer threads blank unless you have some other reason to adjust it.
January 2009
To have these commands executed automatically each time Solaris boots, place them in a file called /etc/init.d/network-tuning and create a link to the file by executing ln /etc/init.d/network-tuning /etc/rc2.d/S99network-tuning Use netstat -s as before to monitor the effect of the changes. You may need to raise the values higher than 2048 (under laboratory conditions some systems have shown improvement with values as high as 4096), but do not increase them without limit. Each increase ties up more memory, and it is counterproductive to accept connections faster than Domino can service them.
January 2009
10
Domino partitions run in FX while others run in IA or TS, the zero-priority Domino threads may be starved for CPU cycles. To avoid CPU starvation, you can specify a non-zero priority in the priocntl command. For Solaris 9 this requires root privileges, so this approach is most suitable for use in a script that will be run by the root user. In that script, at some point before switching to the Domino user account and launching the server itself, add: priocntl -s -c FX -m 45 -p 45 $$ This sets Domino's priority to 45, moderately high in the allowable range of 0 through 60. CAUTION: Do not run Domino at the maximum fixed priority of 60. If you do and if a Domino thread gets into an infinite loop, it will monopolize the CPU and you will have great difficulty logging in and using nsd to kill it. Leave yourself some priority headroom for emergencies. On Solaris 10 it is possible to give the Domino user account the priv_proc_priocntl privilege, allowing it to use the priocntl command as above without needing to be root. One time only, the root user can run usermod -K defaultpriv=basic,priv_proc_priocntl username This grants username the right to use the priocntl command with a non-zero priority, thus allowing a non-root user to start and restart Domino at will without pestering the system administrators. The privilege can also be managed through the Sun Management Console, or can be assigned to a role instead of to a specific user account. For more information on the priocntl command, use man -s1 priocntl. Background information on Solaris 10 privileges can be found with man -s5 privileges, while man -s1m usermod and man -s1m smc discuss tools to administer them.
References
This Tuning Tips document is updated from time to time. You can always find the latest version in the Technical Documentation section of http://www.sun.com/lotus/. Domino Administrator's Guide, Lotus Development Corporation Domino 7 for Sun Solaris 10, IBM Technical Support Organization (part of the Redbook library). Despite the Domino 7 in the title, much of the information in this book applies to Domino 8 and 8.5 as well. See http://www.redbooks.ibm.com/abstracts/sg247162.html Tuning Domino for a High-Throughput Processor, from The View volume 14 issue 2. A more detailed look at some adjustments of special importance for the UltraSPARC T1 and T2 processors. See http://www.lotususergroup.org/submissions.nsf/ContentSpotlight/ 12882DEE6046D6CD862574150018D5C3/?OpenDocument Solaris Internals, Jim Mauro and Richard McDougall. The descriptions in this book give more understanding about the significance of the statistics reported by vmstat and the like, and help demystify the effects of various Solaris parameters.
Sun Microsystems, Inc. Network Circle, Santa Clara, CA 95054 USA Phone 1-650-960-1300 or 1-800-555-9SUN Web sun.com
2009 Sun Microsystems, Inc. All rights reserved. Sun, Sun Microsystems, the Sun logo, Solaris, and UltraSPARC are trademarks or registered trademarks of Sun Microsystems, Inc. in the United States and other countries. All SPARC trademarks are used under license and are trademarks or registered trademarks of SPARC International, Inc. in the United States and other countries. Products bearing SPARC trademarks are based upon an architecture developed by Sun Microsystems, Inc. Lotus, Domino, and Notes are trademarks or registered trademarks of IBM Corporation and/or Lotus Development Corporation.