Accélérer le démarrage de Tomcat
Depuis la specification 3.0 des Servlet, donc depuis la version 7 de Tomcat, le redémarrage des applications est devenu très lent.
Quand je redémarre le serveur pour recharger une petite application, il me faut plus de 5 minutes avant que l’application soit à nouveau disponible alors que Tomcat, lui est bien démarré.
C’est un problème de génération d’entropies, Apache en parle dans ce post mais parmi les solutions proposées, c’est bien celles-ci qui résolvent le problème :
Solution 1 : Installer haveged
Haveged est un service de génération d’aléas basé sur l’algorithme HAVEGE, très utiles sur des serveurs générant peu d’entropie comme les serveurs sans interface graphique.
Haveged est packagé et démarre comme un grand à la fin de l’installation. Il n’y a plus qu’à redémarrer Tomcat pour voir si ça fonctionne plus vite :
apt install haveged service tomcat8 restart
Solution 2 : Urandom, moins sécurisé mais fonctionnel sans installer de paquet :
Il faut passer la source d’entropie de /dev/random à /dev/urandom. Urandom va générer des aléas avec une entropie moins élevée mais ne bloquera pas comme le fait random.
Ajouter ceci dans la ligne JAVA_OPTS de /etc/default/tomcat8 :
-Djava.security.egd=file:/dev/./urandom
Miracle, les applications redémarrent en quelques secondes, il va me falloir trouver d’autres excuses pour faire des pauses café !