Wednesday, March 17, 2010

Weblogic SOA Perfomance boost

I saw a strange behaviour with SOA Suite 11g. A customer was complaining that the server was slow, it took them an amount of time to create a domain or even starting a domain. We known that it will take some time to startup SOA 11g, the application needs to be started, SCA artefacts needs to be loaded, etc.


It took some time to found out what the cause was. It was the following combination. The servers are running on VMWare ESX server with Linux.


The cause was the behaviour of the '/dev/random' and '/dev/urandom' devices. Those devices are generating random numbers. It is the combination of VMWare and the '/dev/urandom' device, that causes problems. In this case the '/dev/urandom' is locked when a process is accessing it. That resultat that other processes must and will wait until the devices is available.


Off course, there is a solution for it. At last we found out that someone else also run into this issues! Credits and kuddos to Oleg Shpak!



We can solve this as follows, four solutions:

1) Change the java configuration in a way that '/dev/urandom' is not mapping directly to '/dev/random'. Change the file $JAVA_HOME/jre/lib/security/java.security:
securerandom.source=file:/dev/urandom
into 
securerandom.source=file:/dev/./urandom

2) Add an Java option during startup of the JVM: .
-Djava.security.egd=file:/dev/./urandom


3) Make sure that the /dev/random is always filled, via the rngd daemon. This solution works for all application running on the OS.

4) Not nice, but it works:
mv /dev/random /dev/random.org
ln -s /dev/urandom /dev/random

Post a Comment