Java Programs Are Running Slower In Newer Servers Due To Lack Of Entropy In The System !!

Author: | Posted in Oracle Applications DBA No comments

Hi Techies,

When any Java concurrent programs in EBS getting blocked or going to never-ending Running state and any issues at WebLogic server startup, then below solution is helpful.

I faced the two issues above and with the help below solution, issue resolved.

Metalink id followed: Java Programs Are Running Slower In Newer Servers Due To Lack Of Entropy In The System (Doc ID 1615981.1)

ISSUE:

The issue is caused by the generation of the secure keys within Java code which accesses /dev/random behind the scenes.

If the entropy pool is exhausted, /dev/random becomes the bottleneck. This will cause all process requiring use of the entropy pool to be blocked.  It will remain blocked until additional data has been collected from the sources of entropy that are available.

Entropy levels can be checked using the following command:

cat /proc/sys/kernel/random/entropy_avail

It should be more than 400, but if the system has lots of Java programs and concurrency is high, then it is recommended to have at least 2000.

SOLUTION:

Instead of using /dev/random, (also do NOT use: /dev/urandom), use random number generator daemon like rngd.  The advantage of /dev/urandom is that it will not block when the entropy pool is exhausted. Instead, it will reuse the internal pool to produce more pseudo-random bits.  Therefore, /dev/urandom is not considered a secure source for entropy generation.  However, using rngd is secure, and using rngd with a securekey USB dongle would also be secure.

One can install rngd with following steps ( based on Oracle Linux ):

yum install rng-tools
echo ‘EXTRAOPTIONS=”-i -o /dev/random -r /dev/urandom -t 10 -W 2048″‘ > /etc/sysconfig/rngd
chkconfig rngd on
service rngd restart

Add Your Comment