JVM Configuration

Cipango performance configuration is mainly function of JVM memory configuration.
The memory needed is function of number of concurrent calls, application, session duration.

Performance will be greatly improved if the following line is set in /etc/default/jetty

JAVA_OPTIONS=="-Xmx1700M -Xms1700M -XX:+UseParNewGC -XX:+UseConcMarkSweepGC"

To allow Cipango to use more than 2 Gb of RAM, you should use a 64 bits OS and JVM.

See in Configuring and Running Cipango to see how to set this JVM property.

Adapt maximum heap size (-Xmx) and minimum heap size (-Xms) with memory available.

Ensure that in every case only RAM is used. (no swap used)

These parameters are not set by default in order to allow to run Cipango on computers with few memory.

Log configuration

message tracing should be disabled: Ensure in cipango.xml, that the following XML is commented.

<Set name="accessLog">
   <New class="org.cipango.server.log.FileMessageLog">
      ...
  </New>
</Set>

Servlet

As written in sip servlet specification, for reasons of performance, it is recommended that applications explicitly invalidate SIP application session and SIP session objects as soon as possible.

TCP and UDP received buffer size

If there is some retransmissions and CPU is not at 100% usage, this could be the sign that buffer size is too small: some packets are destroyed by the OS before its can be handled by JVM.

More details on buffer sizing are available on http://www.29west.com/docs/THPM/udp-buffer-sizing.html

Detection

To detect packets lost due to small received buffer size, use the command:

OS

Command

Linux

netstat -su | grep "packet receive errors"

Solaris

netstat -s | grep udpInOverflows

Windows

Impossible to detect

AIX

netstat -s | grep "fragments dropped"

FreeBSD

netstat -s | grep dropped

Setting buffer size

OS

Command

Linux

sysctl -w net.core.rmem_max=8388608 net.core.wmem_max=8388608 net.core.rmem_default=8388608 net.core.wmem_default=8388608 net.ipv4.route.flush=1

Solaris

ndd -set /dev/udp udp_max_buf 8388608

FreeBSD, Darwin

sysctl -w kern.ipc.maxsockbuf=8388608

AIX

no -o sb_max=8388608 (note: AIX only permits sizes of 1048576, 4194304 or 8388608)

Detect memory leaks

We recommend to use YourKit Java Profiler.

YourKit is kindly supporting open source projects with its full-featured Java Profiler.
YourKit, LLC is the creator of innovative and intelligent tools for profiling Java and .NET applications. Take a look at YourKit's leading software products: YourKit Java Profiler and YourKit .NET Profiler.