Skip Headers
Oracle® Communications Instant Messaging Server System Administrator's Guide
Release 9.0.2

E52523-01
Go to Documentation Home
Home
Go to Table of Contents
Contents
Go to Feedback page
Contact Us

Go to previous page
Previous
Go to next page
Next
PDF · Mobi · ePub

6 Improving Instant Messaging Server Performance

This chapter describes how to enhance the tuning and performance of Oracle Communications Instant Messaging Server.

Tuning Instant Messaging Server Memory

Use the most current version of Java suitable for your operating system and version of Instant Messaging Server. For information about Java versions, see the topic on installing Java for Communications Suite at:

https://wikis.oracle.com/display/Installing+Java+For+Communications+Suite+7.0.6

Instant Messaging Server uses the iim.jvm.maxmemorysize configuration property to set the maximum size of the Java Virtual Machine (JVM) heap to allocate. The default value of this parameter is 256 Mbytes. However, a large active deployment of Instant Messaging Server needs more memory. Determining the amount of memory to allocate for the Instant Messaging server depends on the number of concurrent active users that you need to support.

Additional load per user, use of additional Instant Messaging Server services like news or file transfer, and use of features such as message filters, archiving, or TLS require more memory. You should perform load profiling of typical user activity before deploying Instant Messaging Server into a production environment. Contact Oracle Support Services for more information about load profiling an Instant Messaging Server deployment.

Instant Messaging Server Thread Pooling and Service Port Configuration

Table 6-1 shows the set of properties that you configure to tailor the size and behavior of thread pools used to service client-to-server and server-to-server requests. These thread pools combined with the associated service ports can improve the throughput of an Instant Messaging server.

Table 6-1 Thread Pooling and Service Port Properties

Property Description Default Value

iim_server.maxthreads

Maximum number of threads for the default thread pool.

50

iim_server.threadpool

List of independent thread pools.

All parameters use the default thread pool.

iim_server.threadpool.capacity

Capacity of the default thread pool.

10 * maxthreads

iim_server.threadpool.poolname.maxthreads

Maximum threads for the named thread pool, poolname.

4

iim_server.threadpool.poolname.capacity

Capacity of the named thread pool, poolname.

10 * poolname_maxthreads


Table 6-2 lists the defined thread pools.

Table 6-2 Defined Thread Pools

Name Use

s2s-in

All server-to-server inbound communications. If the port allows server-to-server inbound communications, Instant Messaging Server uses this thread pool.

s2s-out

All server-to-server outbound communications. If the port allows server-to-server outbound communications, Instant Messaging Server uses this thread pool.

s2s

All server-to-server communications. The combination of s2s-in and s2s-out.


Defined thread pools can be specified and used with an associated server-only service port. You can modify the thread and port configurations by using the imconfutil command. You need to restart the server after making changes to the thread and port configurations.

Sample Load Test of the Instant Messaging Server

Table 6-3 shows a sample load Instant Messaging Server load test.

Table 6-3 Sample Instant Messaging Server Load Test

Platform Details System Configuration Server Heap Size No. of Users No. of Concurrent Sessions User Cache Load Per 10 Seconds
  • Oracle's Sun Fire T1000 Server

  • Solaris 10 OS

  • RAM 16 GB

Server and Multiplexor installed in the same box

1 GByte for Mux,

5 GBytes for server

100,000

60000

128 count

  • 50 users login to the server

  • 50 users logout

  • 1450 presence updates

  • 350 messages sent to offline destinations

  • 2400 messages sent to online destinations

  • 850 messages sent to random destinations

  • 50 roster additions

  • 50 roster rename

  • 50 roster removal


This sample uses the following configuration properties.

iim.jvm.maxmemorysize=4096
iim_server.memory.user.cache_count=128
iim_ldap.maxconns=70
iim_server.maxthreads=50
iim_server.jvm.options=-d64
iim_mux.jvm.options=-d6
iim_mux.maxsessions=100000
iim_server.maxsessions=150000

where,

  • iim_server.memory.user.cache_count specifies the memory user cache size. In the this sample, the value is set to 128 for a user base of 100,000. If the user base is more than 100,000, increase this value proportionately.

  • iim_server.scratch_directory specifies the directory where the user cache is written to the disk. Place the scratch directory on tempfs. For 100,000 user base in Solaris 10 OS, approximately 500 to 600 MBytes of space is required on a file system and approximately 4 to 5 GBytes of space is required on tempfs.

  • iim_ldap.maxconns specifies the LDAP context pool size. In case of more roster operations and in a server pool environment, increase this value appropriately.

  • iim_server.maxthreads specifies the size of the thread pool. If you do not have sufficient memory to keep user cache in tempfs, you can increase the value of the thread pool.

  • iim_server.jvm.options enables use of the 64-bit JVM and thus large heap sizes.

  • iim_mux.jvm.options enables you start the multiplexor in 64-bit mode.

  • iim_mux.maxsessions specifies the maximum number of concurrent client connection a multipexor can accept.

  • iim_server.maxsessions specifies the number of sessions allowed through an instance of multipexor connected to the server.