J'utilise Tomcat 7.0.57 sur CentOS 6.6 32 bits et openJDK7 . Lorsque je lance 14 instances différentes de Tomcat sur mon serveur (environnement de production), beaucoup d'entre elles prennent trop de temps à démarrer.
Cela fait partie du journal de démarrage, qui me dit où prend tout le temps
Jan 28, 2015 2:49:41 PM org.Apache.catalina.util.SessionIdGenerator createSecureRandom
INFO: Creation of SecureRandom instance for session ID generation using [SHA1PRNG] took [199,620] milliseconds.
Quelle est la meilleure pratique/solution à ce problème?
Merci!
Les appels aléatoires sécurisés peuvent être bloquants car il n’ya pas assez d’entropie pour les alimenter dans/dev/random.
Si vous avez la ligne
securerandom.source=file:/dev/random
dans /jre/lib/security/Java.security, changer cela en urandom peut améliorer les choses (bien que ce soit probablement déjà la valeur par défaut).
Alternativement, il y a quelques suggestions sur la façon de nourrir la piscine ici
https://security.stackexchange.com/questions/89/feeding-dev-random-entropy-pool
J'ai rencontré le même problème Tomcat étant trop lent pour commencer. J'ai suivi cet article sur DigitalOcean et ai installé au lieu d'utiliser urandom.
haveged permet de générer un caractère aléatoire en fonction des variations de temps d'exécution du code sur un processeur. Comme c'est presque impossible pour un morceau de code à prendre le même temps exact pour exécuter, même dans le même environnement sur le même matériel, le moment d’exécuter un seul ou plusieurs programmes devraient convenir pour ensemencer une source aléatoire. Le ont généré les sources d'implémentation de la source aléatoire de votre système (généralement /dev/random) en utilisant des différences dans le compteur d'horodatage de votre processeur (TSC) après avoir exécuté une boucle à plusieurs reprises
Suivez les étapes décrites dans cet article. _ { https://www.digitalocean.com/community/tutorials/how-to-setup-addopy-entropy-for-cloud-servers-using-haveged }
Je l'ai posté ici
Voici quelques instructions spécifiques pour ajuster uniquement Tomcat selon la réponse de Henry
créer /etc/Tomcat/fastersecurerandom.properties
securerandom.source=file:/dev/urandom
éditer Java_OPTS
à l'intérieur /etc/Tomcat/tomcat.conf
Java_OPTS="-Djava.security.properties=/etc/Tomcat/fastersecurerandom.properties"
FYI j'ai trouvé que je ne pouvais pas définir plusieurs Java_OPTS
avec Java_OPTS="$Java_OPTS ..."
malgré les exemples commentés. Pauvre et vieux confus Tomcat 7 ne pourrait pas démarrer conformément à un avertissement dans /var/log/messages
Sur différentes versions/versions, vous pouvez trouver des variantes permettant de définir les variables d’environnement pour Tomcat. Le meilleur moyen de déboguer s’ils prennent effet est de vérifier la commande en cours d’exécution:
$ ps aux | grep Java
Tomcat 4821 4.7 13.9 2626888 263396 ? Ssl 22:31 0:23 /usr/lib/jvm/jre/bin/Java -DJENKINS_HOME=/opt/jenkins/ -Xmx512m -Djava.net.preferIPv4Stack=true -Djava.net.preferIPv4Addresses=true -Djava.security.properties=/etc/Tomcat/fastersecurerandom.properties -classpath /usr/share/Tomcat/bin/bootstrap.jar:/usr/share/Tomcat/bin/Tomcat-juli.jar:/usr/share/Java/commons-daemon.jar -Dcatalina.base=/usr/share/Tomcat -Dcatalina.home=/usr/share/Tomcat -Djava.endorsed.dirs= -Djava.io.tmpdir=/var/cache/Tomcat/temp -Djava.util.logging.config.file=/usr/share/Tomcat/conf/logging.properties -Djava.util.logging.manager=org.Apache.juli.ClassLoaderLogManager org.Apache.catalina.startup.Bootstrap start
La réponse de @KCD ci-dessus a presque fonctionné pour moi, j’avais besoin de la masser un peu - comme suit:
1) mon Tomcat était Tomcat7
, j'ai donc créé mon fichier fastersecurerandom.properties
dans le répertoire /etc/Tomcat7
,
2) Selon une autre page , je devais changer le contenu de fastersecurerandom.properties
De
securerandom.source=file:/dev/urandom
à
securerandom.source=file:/dev/./urandom
3) Je n'avais pas de fichier Tomcat.conf
, alors j'ai ajouté à mon /etc/init.d/Tomcat7
(script de démarrage de Tomcat - je sais), juste avant la ligne - catalina_sh() {
Java_OPTS="$Java_OPTS -Djava.security.properties=/etc/Tomcat7/fastersecurerandom.properties"
Notez que j'ai ajouté 7
à Tomcat
ici aussi.
Cela valait la peine de faire un ps -deaf | grep Tomcat
pour confirmer d’abord que le nouveau paramètre -D
était en train de parvenir à la commande, ainsi que pour vérifier qu’il faisait référence au bon fichier et que le fichier était présent. C'est à ce moment-là que j'ai remarqué le 7
manquant.
J'étais sur Java 1.7 et sur Ubuntu 14.04.1.
J'ai changé /jre/lib/security/Java.security, ci-dessous: Securerandom.source = fichier:/dev /./urandom