Skip to main content

Seeding Java Authorization and Authentication using /dev/urandom

We had a strange issue during Oracle WebLogic development yesterday. Setting up a secure connection between a client and the WebLogic Admin server took really long on our shiny new hardware (Dell R710) compared the older servers (Dell 2950). After we made sure everything was exactly the same, people started to blame C1 and C1E states and other powersave or cpu throttling measures. However, given the different in setup times (2-6 sec vs 50-90 sec), I suspected it to be something else. Throttling down from 2.23 GHz to 1.6 GHz cannot cause such a great difference. Or at least be unlikely.

Lo and behold, it turned out to be related to the seeding of the random number generator in Java. Normally this is linked to /dev/random but can be sped up by using /dev/urandom, which uses some entropy of your system. Still, the urandom device, while faster, still caused a 20-fold difference.

As a workaround, you can tell your JVM which seed generator to use and prevent JVM from waiting or looking or whatever it does. See also the JAAS Reference Guide for more information.

If you call your JVM with the command line switch
-Djava.security.egd=file:/dev/./urandom
it will go much speedier! And yes, there is a dot "." inside that path, in order to work around another bug. :)

Comments

Popular posts from this blog

Preventing PuTTY timeouts

Just found a great tip to prevent timeouts of PuTTY sessions. I'm fine with timeouts by the host, but in our case the firewall kills sessions after 30 minutes of inactivity... When using PuTTY to ssh to your Linux/Unix servers, be sure to use the feature to send NULL packets to prevent a timeout. I've set it to once every 900 seconds, i.e. 15 minutes... See screenshot on the right.

Removing VGs or LVs from LVM

While are many excellent tutorials about creating and using LVM on Linux, not may show you how you can remove disks from LVM Volume Groups (VG) and reclaim storage or how to remove a Logical Volume (LV) from your LVM set-up. Here is what I did: Use -t to TEST ANY LVM action first! We are going to release 1 TB from LVM. The Volume group was extended with 1 TB storage to serve as a cheap NFS/CIFS file server when setting up our data center. It is now deprecated and replaced by a NAS so it's no longer needed. 1) check LVM; note the four 256 GB LUNs [root@server ~]# pvscan -v Wiping cache of LVM-capable devices Wiping internal VG cache Walking through all physical volumes PV /dev/sdb1 VG vgdata lvm2 [50.00 GB / 0 free] PV /dev/sdc1 VG vgdata lvm2 [256.00 GB / 0 free] PV /dev/sdd1 VG vgdata lvm2 [256.00 GB / 0 free] PV /dev/sde1 VG vgdata lvm2 [256.00 GB / 0 free] PV /dev/sdf1 VG vgdata lvm2 [256.00 GB / 0 free] PV /dev/sdg ...

Tuning the nscd name cache daemon

I've been playing a bit with the nscd now and want to share some tips related to tuning the nscd.conf file. To see how the DNS cache is doing, use nscd -g. nscd configuration: 0 server debug level 26m 57s server runtime 5 current number of threads 32 maximum number of threads 0 number of times clients had to wait yes paranoia mode enabled 3600 restart internal passwd cache: no cache is enabled [other zero output removed] group cache: no cache is enabled [other zero output removed] hosts cache: yes cache is enabled yes cache is persistent yes cache is shared 211 suggested size 216064 total data pool size 1144 used data pool size 3600 seconds time to live for positive entries 20 seconds time to live for negative entries 66254 cache hi...