Jag har en applikation som har körts en längre tid på Debian 4.0. Nu så har jag fått nya servrar med Ubuntu 9.10 och helt plötsligt så tog uppstart av applikationen allt från några millisekunder till flera minuter. Skumt... Så det var bara att börja steppa koden för att ta reda på varför det tog sån tid att starta. Min applikation använder sig utav snmp4j och jag skapar en instans av Snmp vid uppstart. Snmp implementationen i sin tur skapade ett slump värde med hjälp av `java.security.SecureRandom¿ med följande kod:

byte[] rnd = new byte[8];
java.security.SecureRandom sr = java.security.SecureRandom.getInstance("SHA1PRNG");
sr.nextBytes(rnd); // <---- Uh oh - problems

Den markerade raden var det som tog tid...

Efter lite googling så kunde jag lista ut att källan till problemet var att Ubuntu fick slut på entropy som används av SecureRandom för att skapa slump värdet. Lösningen på problemet var att installera rng-tools

sudo apt-get install rng-tools

När installationen var klar och tjänsten skulle starta fick jag ett felmeddelande

...
Trying to create /dev/hwrng device inode...
Starting Hardware RNG entropy gatherer daemon: (failed).
invoke-rc.d: initscript rng-tools, action "start" failed.

Lösningen på det felet är att editera filen /etc/default/rng-tools

sudo vi /etc/default/rng-tools

Och lägga till följande rad

HRNGDEVICE=/dev/urandom

Sen så är det bara att starta tjänsten

sudo /etc/init.d/rng-tools start

Därefter så startade min applikation på nolltid igen.

Hur skulle man klara sig utan Google? Hur löste man problem innan internet fanns tillgängligt? Jag bara undrar...