Sun Java logo     Previous      Contents      Index      Next     

Sun logo
Sun Java System Calendar Server Administration Guide 

Chapter 19
Tuning Calender Server Performance

To improve the performance of Sun Java™ System Calendar Server, consider the following options:

 


Indexing the LDAP Directory Server

To improve performance when Calendar Server accesses the LDAP directory server, add indexes to the LDAP configuration file for the following attributes.

Note If you run the Directory Server Setup (comm_dssetup.pl) script to configure Directory Server 5.x, the script adds indexes for the icsCalendar and icsCalendarOwned attributes.

For information about adding directory server indexes, refer to the Directory Server Configuration, Command, and File Reference on the following website:

http://docs.sun.com/db/coll/S1_ipDirectoryServer_51


Improving Calendar Search Performance in a DWP Environment

When you have your calendar database on multiple back-end servers, that is, when you are in a DWP environment, searching for a calendar can be time consuming. It can be faster to look in the LDAP entry first and find out directly which DWP host the calendar resides on.

To enable calendar searches to look at the LDAP directory first, and the calendar database second, be sure the following parameter in the ics.conf file is set as shown, which is the default:

service.calendarsearch.ldap = "yes"

If you are enabling calendar searches of the LDAP directory, you can improve performance of the search by:

Indexing the icsCalendarOwned Attribute

To determine if the calendar search performance of the LDAP directory server can be improved, try the following LDAP command:

ldapsearch -b "base"
"(&(icscalendarowned=*user*)(objectclass=icsCalendarUser))"

where base is the LDAP base DN of the directory server where the user and resource data for Calendar Server is located, and user is the value that an end user can enter in the Calendar Express Subscribe->Calendar Search dialog.

Tests have shown that with 60,000 entries, the above search took about 50-55 seconds without indexing icsCalendarOwned. After indexing, the above search took only about 1-2 seconds.

On Directory Server, index the icsCalendarOwned attribute using the following command on Solaris Operating Systems:

server5/bin/slapd db2index -D slapd-serverID
-t icsCalendarOwned: eq,pres,sub:2.16.840.1.113730.3.3.2.11.1

where slapd-serverID is the full path to the slapd-serverID directory.

Setting the nsSizeLimit and nsLookthroughLimit Parameters

The nsSizeLimit and nsLookthroughLimit parameters in your LDAP directory server configuration must be large enough so that searches complete properly.

To determine if these parameters are set to appropriate values, try the following command:

ldapsearch -b "base"
"(&(icscalendarowned=*user*)(objectclass=icsCalendarUser))"

where base is the LDAP base DN of the directory server where the user and resource data for Calendar Server is located, and user is the value that an end user can enter in the Calendar Express Subscribe->Calendar Search dialog.

If the LDAP server returns an error, the nsSizeLimit or the nsLookthroughLimit parameter might not be large enough. Follow these guidelines to set these parameters:

Enabling the CLD Cache Option

To optimize searching the LDAP, set the CLD cache option as shown (“yes” is default):

caldb.cld.cache.enable = “yes”

See also, Using the CLD Cache Option.


Using the LDAP Data Cache Option

The LDAP data cache option ensures that LDAP data is available immediately after it has been committed, even if the LDAP directory server is configured to include a delay in the availability of committed data.

For example, if your site has deployed a master/slave LDAP configuration where Calendar Server accesses the master LDAP directory through a slave LDAP directory server, which in turn introduces a delay in the availability of committed LDAP data, the LDAP data cache can ensure that your Calendar Server clients have accurate LDAP data.

This section covers the following topics:

Considerations for Using the LDAP Data Cache

Use these guidelines to determine if your site should configure the LDAP data cache:

Master/Slave LDAP Configuration

A Master/Slave LDAP configuration includes a master (root) directory server and one or more slave (consumer or replica) directory servers. Calendar Server can access the master LDAP directory server either directly or through a slave directory server:

In this second type of configuration, problems with inaccurate LDAP data can occur because of the delay in the availability of committed LDAP data to the slave directory servers.

For example, Calendar Server commits an LDAP data change, but the new data is not available for a specific amount of time because of the delay in the master directory server updating each slave directory server. A subsequent Calendar Server client operation uses the old LDAP data and presents an out-of-date view.

If the delay in updating the slave directory servers is short (only a few seconds), clients might not experience a problem. However, if the delay is longer (minutes or hours), clients will display inaccurate LDAP data for the length of the delay.

Table 0-1 lists the LDAP attributes that are affected by a delay in a master/slave LDAP server configuration where Calendar Server accesses the master LDAP directory server through a slave LDAP directory server.

Table 0-1  Calendar Server LDAP Attributes Affected by Delays

Operation

LDAP Attributes Affected

Auto provisioning

icsCalendar, icsSubscribed, icsCalendarOwned, icsDWPHost

Calendar groups

icsSet

Calendar creation

icsCalendarOwned, icsSubscribed

Calendar subscription

icsSubscribed

User options

icsExtendedUserPrefs, icsFirstDay, icsTimeZone, icsFreeBusy

Calendar searches

icsCalendarOwned

To insure that your end uses have the most recent LDAP data, configure the LDAP data cache as described in the following sections: LDAP Data Cache and LDAP Data Cache Configuration Parameters.

LDAP Data Cache

The LDAP data cache resolves the master/slave LDAP configuration problem by providing Calendar Server clients with the most recent LDAP data, even when the master directory server has not updated each slave directory server.

If the LDAP data cache is enabled, Calendar Server writes committed LDAP data to the cache database (ldapcache.db file). By default, the LDAP cache database is located in the cal_svr_base/var/opt/SUNWics5/csdb/ldap_cache directory, but you can configure a different location if you prefer.

When a client makes a change to the LDAP data for a single user, Calendar Server writes the revised data to the LDAP cache database (as well as to the slave directory server). A subsequent client operation retrieves the LDAP data from the cache database. This data retrieval applies to the following operations for a single user:

Thus, the LDAP data cache database provides for:

Limitations

The LDAP data cache does not provide for:

LDAP Data Cache Configuration Parameters

Table 0-2 describes the configuration parameters in the ics.conf file for the LDAP data cache.

Table 0-2  LDAP Data Cache Configuration Parameters 

Parameter

Description

local.ldap.cache.enable

Enables (“yes”) or disables (“no”) the LDAP data cache. The default is “no”.

local.ldap.cache.checkpointinterval

Specifies the number of seconds for the checkpoint thread to sleep. The default time is 60 seconds.

local.ldap.cache.circularlogging

Specifies whether or not to remove the database log files after they have been processed. The default is “yes”.

local.ldap.cache.homedir.path

Specifies the physical location of LDAP data cache database. The default is cal_svr_base/var/opt/SUNWics5/csdb/ldap_cache.

local.ldap.cache.logfilesizemb

Specifies the maximum size in megabytes of the checkpoint file. The default is 10 megabytes.

local.ldap.cache.maxthreads

Specifies the maximum number of threads for the LDAP data cache database. The default is “1000”.

local.ldap.cache.mempoolsizemb

Specifies the number of megabytes of shared memory. The default is 4 megabytes.

local.ldap.cache.entryttl

Specifies the time to live (TTL) in seconds for an LDAP data cache entry. The default is 3600 seconds (1 hour).

local.ldap.cache.stat.enable

Specifies whether or not to log the access to the LDAP data cache and to print statistics in the log file. The default is “no”.

Note This parameter applies only to debug mode.

local.ldap.cache.stat.interval

Specifies the interval in seconds when each statistics report is written to the log file. The default is 1800 seconds (30 minutes).

local.ldap.cache.cleanup.interval

Specifies the interval in seconds between each database cleanup. The default is 1800 seconds (30 minutes).

 


Caution

If Calendar Server or the server where Calendar Server is running is not properly shut down, manually delete all files in the ldap_cache directory to avoid any database corruption that might cause problems during a subsequent restart.



Using the CLD Cache Option

If you are using the with the CLD plug-in, make sure the following configuration parameter in the ics.conf are set to “yes” (which is the default value for each parameter):

caldb.cld.cache.enable = "yes"

This parameter enables the CLD cache option. This cache stores the DWP host server information (icsDWPHost LDAP attribute) for calendar users and thus reduces calls to the LDAP directory server.

The other CLD cache option parameters you may want to set are:

For more information on these and other related ics.conf parameters, see Appendix E, "Calendar Server Configuration Parameters."


Using a Memory-Based File System for the Session Database

To improve performance on Solaris Operating Systems, you can configure a memory-based file system (tmpfs) for the session database by setting the following parameter in the ics.conf file:

local.instance.use.tmpfs to "true"

The tmpfs file system is then overlaid based on the values of the service.http.sessiondir.path and service.admin.sessiondir.path parameters.

For more information, see the tmpfs(7FS) and mount_tmpfs(1M) man pages in the Solaris documentation:

http://docs.sun.com/db/prod/solaris


Using Load Balancing Across Multiple CPUs

If a server has multiple CPUs, by default Calendar Server distributes the HTTP Service (cshttpd processes) and Distributed Database Service (csdwpd processes) across the CPUs.

The service.http.numprocesses and service.dwp.numprocesses parameters determine the actual number of processes that run for each service. By default, these parameters are set to the number of CPUs for the server during installation, but you can reset these values. For example, if a server has 8 CPUs, but you want a cshttpd and csdwpd process to run in only 4 CPUs, set the parameters as:

service.http.numprocesses="4"
service.dwp.numprocesses="4"

To disable load balancing, add the service.loadbalancing parameter to the ics.conf file and set it to “no”. Then restart Calendar Server for the change to take effect.


Using Timeout Values

Calendar Server performance can be adjusted using timeout values for various ics.conf parameters.

The following types of timeouts exist:

For information about editing ics.conf parameters, see Editing the ics.conf Configuration File.

Timeout Values for csadmind

Table 19-1 describes the Calendar Server timeout parameters in the ics.conf file used by the Administration (csadmin) service.

Table 19-1  HTTP Timeout Values for the Administration Service (csadmin)

Parameter

Description

service.admin.idletimeout

Specifies the number of seconds the csadmind service waits before timing out an idle HTTP connection.

The default is 120 seconds (2 minutes).

service.admin.resourcetimeout

Specifies the number of seconds the csadmind service waits before timing out an HTTP session for a resource calendar.

The default is 900 seconds (15 minutes).

service.admin.sessiontimeout 

Specifies the number of seconds the csadmind service waits before timing out an HTTP session.

The default is 1800 seconds (30 minutes).

HTTP Timeout Values for End Users

Table 19-2 describes the Calendar Server HTTP timeout parameters in the ics.conf file that apply to end users.

Table 19-2  HTTP Timeout Values in ics.conf for End Users (cshttpd Service)

Parameter

Description

service.http.idletimeout

Specifies the number of seconds the cshttpd service waits before timing out an idle HTTP connection.

The default is 120 seconds (2 minutes).

service.http.resourcetimeout

Specifies the number of seconds the cshttpd service waits before timing out an HTTP session for a resource calendar.

The default is 900 seconds (15 minutes).

service.http.sessiontimeout 

Specifies the number of seconds the cshttpd service waits before timing out an HTTP session.

The default is 1800 seconds (30 minutes).

GSE Queue Timeout Value

The following ics.conf file parameter specifies the time in seconds to wait before Calendar Server scans the Group Scheduling Engine (GSE) queue for incoming jobs:

gse.belowthresholdtimeout = "3"

If there are more jobs in the queue than the maximum threads allocated, the last thread always scans the queue again. Therefore, this setting only takes effect when the number of jobs is below the maximum threads allocated.

The default is “3”. Increasing this number reduces the frequency the server scans the queue and can improve overall performance. However, if the queue is getting too large because of an increased volume of events, the time can be decreased to allow the queue to be processed faster. This may serve to slow down overall performance, but events will be updated sooner.


Using the Refresh View Option

For Calendar Express end users, the Refresh View option improves performance by using calendar data in the browser cache to refresh a view rather than requiring an update from the Calendar Server database.

To enable the Refresh View option, the following parameter in the ics.conf file must be set to “yes”:

browser.cache.enable = "yes"

If you reset this parameter, you must stop and then restart Calendar Server for the new value to take effect.

When the Refresh View option is configured for a site, Calendar Express displays Refresh View on all calendar views on the View tab.

When a user clicks Refresh View, Calendar Express first checks whether the calendar data in the view has changed before requesting an update from the calendar database. If the data has not changed, Calendar Express uses information in the browser cache to refresh the view. Unnecessary requests to the calendar database are avoided, which is especially useful if a calendar has a large number of events or tasks.

If an event or task has changed, Calendar Express requests an update from the calendar database to refresh the view. Thus, users can also use Refresh View to ensure that Calendar Express always displays the latest calendar data.


Disabling the Calendar Express Tool Bar Repainting Option

The tool bar repainting option causes a Calendar Express view to be repainted (refreshed) when a user clicks refresh. Sometimes, however, this option can cause performance problems because Calendar Server refreshes a view by performing XML and XSLT transformation for the tool bar.

To disable the tool bar repainting option, set the following parameter in the ics.conf file to “no”:

ui.toolbar.repainting.enable="no"

If ui.toolbar.repainting.enable is set to “no”, clicking refresh on any view takes the Calendar Express user back to the default view.

Setting ui.toolbar.repainting.enable to “no” can improve performance, because Calendar Express does not perform the XML and XSLT transformation for the tool bar.

If the browser cache option (browser.cache.enable parameter) is set to “yes”, the tool bar repainting option is not used.


XSL Rendering in the Client Browser

Calendar Server performs client-side rendering by downloading the XSLT processing to the end user’s browser, which in turn reduces the processing that must be done by Calendar Server. Calendar Server downloads the XSLT processing only if the browser is capable of rendering the XSLT processing. In the current release, this applies only to Internet Explorer 6.0.

Tests have shown that client-side rendering can improve the interface (UI) scalability by 4 to 6 times, which means that Calendar Server can support 4 to 6 times as many concurrent end users without significantly degrading performance of the CPU.

The following parameter in the ics.conf file controls client-side rendering (currently for Internet Explorer 6.0 or later only):

render.xslonclient.enable="yes"

By default this parameter is set to “yes”. To turn off client-side rendering, set the parameter to “no” and then restart Calender Server.



Previous      Contents      Index      Next     


Copyright 2004 Sun Microsystems, Inc. All rights reserved.