Timeout Errors During Client Synchronization

Problem: Various timeout errors are reported during client synchronization, especially in a cluster configuration.

Explanation: This may indicate that performance tuning is required to make Unwired Server processing more efficient.

Solution: Take one or more of the following actions to improve performance.

Action 1: Review the Configuration

Review the cluster configuration for settings that may impact performance.
  1. Monitor the CPU utilization during client synchronization to determine the percent used. Utilization should be less than 80% for the cluster; ideally no more than 70 – 80%. If it is higher, check the Unwired Server logs for related messages.
  2. High CPU utilization may indicate the cluster is bound by physical I/O (the disk queue is over utilized). The administrator may check the performance monitor to confirm this state. When the disk queue is backed up, requests may start to time out and the overall system throughput will degrade. Follow the Sybase Unwired Platform Performance and Tuning white paper instructions to reduce the load on the cluster by decreasing the number of MobiLink threads on each SUP node. The white paper is located on the SAP Developer Network Web site: http://www.sdn.sap.com/irj/sdn/mobile. Click on Sybase Unwired Platform, and navigate to the white paper category.

Action 2: Reconfigure Client Connections

Configure the client connections to use a longer timeout on the connection. The default is the minimum value of 240 seconds, and the maximum value is 600 seconds. This value is set by adding the timeout property and desired value to the NetworkStreamParams on the connection.

For CS/UltraLite, assuming the generated DB class name is "MyPackageDB", the code to set timeout could be:

MyPackageDB.GetSynchronizationProfile().NetworkStreamParams="trusted_certificates=;url_suffix=;timeout=600"

For Java/UltraLiteJ, you cannot set timeout, because UltraLiteJ does not provide an API to set a timeout value for client connection. Sybase Unwired Platform generated client code for UltraLiteJ (such as for Java desktop and RIM replication based synchronization client) only supports the "trusted_certificates" and "url_sufffix" properties in NetworkStreamParams. If you set other properties in NetworkStreamParam, they will be ignored.

For additional information on setting the NetworkStreamParams properties, search System Administration for references to "stream parameter." The topic Verifying Device Client HTTPS Setup provides this sample code for setting stream parameter:

"url_suffix=/ias_relay_server/client/rs_client.dll/[SUP_FARM_ID];tls_type=RSA;trusted_certificates=rsa_root.crt;identity=id_client.pem;identity_password=pwd;"

Action 3: Modify Client Application Code

Add retry logic to your client application code to retry syncs that fail with timeout.