Aller au contenu
  • Nos offres
  • Blog
  • Contact
  • Carrières
Menu
  • Nos offres
  • Blog
  • Contact
  • Carrières
Inscrivez-vous à la newsletter

Inscrivez-vous à la newsletter

Abonnez-vous maintenant et nous vous tiendrons au courant.
Nous respectons votre vie privée. Vous pouvez vous désabonner à tout moment.

Blog

  • Accueil
  • Actualités
  • Cloud
  • Infrastructure
  • Données / Sécurité
  • Intégration
  • Dev / DevOps
  • SAM / FinOps
Menu
  • Accueil
  • Actualités
  • Cloud
  • Infrastructure
  • Données / Sécurité
  • Intégration
  • Dev / DevOps
  • SAM / FinOps
  • le 15/07/2014
  • Jean-nicolas Marquis
  • Développement, Page d'accueil, Serveurs d'application

Démarrage d'Oracle Weblogic figé sur linux ? Avez-vous regardé l'entropy ?

Démarrage d'Oracle Weblogic
Partager sur linkedin
Partager sur twitter
Partager sur facebook

Versions d’Oracle Weblogic concernées : 8.1 à 12.1.2
OS Concerné : Linux x86 et Linux x86_64

Symptômes :

Démarrage très lent d’un serveur (admin où managed) Weblogic sans explication flagrante. Ce problème se retrouve aussi lors de la création du domaine.

Si vous effectuez un thread dump de la JVM en question vous pouvez observer un fameux thread à l’état lock :

- locked (a java.lang.Object)
 at sun.security.provider.NativePRNG$RandomIO.access$300(NativePRNG.java:108)
 at sun.security.provider.NativePRNG.engineGenerateSeed(NativePRNG.java:102)
 at java.security.SecureRandom.generateSeed(SecureRandom.java:495)
 at com.bea.security.utils.random.AbstractRandomData.ensureInittedAndSeeded(AbstractRandomData.java:91)
 - locked (a com.bea.security.utils.random.SecureRandomData)
 at com.bea.security.utils.random.AbstractRandomData.getRandomBytes(AbstractRandomData.java:105)
 - locked (a com.bea.security.utils.random.SecureRandomData)
 at com.bea.security.utils.random.AbstractRandomData.getRandomBytes(AbstractRandomData.java:100)
 at com.bea.console.utils.CSRFUtils.getSecret(CSRFUtils.java:56)
 at jsp_servlet._jsp._changemgmt.__changemanager._jspService(__changemanager.java:156)

Weblogic et surtout java tente de générer des clés en utilisant la classe SecureRandom qui fait appel à /dev/ramdom.

Pourquoi ce temps d’attente

Linux à deux device pour fournir des données aléatoires : /dev/random et /dev/urandom. A partir du noyau 2.6 le problème apparait quand l’entropy disponible au niveau système est bas (aux alentours de 100 bits et moins).
La différence entre ces deux device est que à un moment /dev/ranwom n’a pas suffisamment de bits disponibles et attends jusqu’à ce qu’il y en ait suffisamment (entropy générée par l’utilisateur et insérée dans le système).

Mais comment un système peut manquer d’entropy ?

Il faut garder à l’esprit qu’un OS effectue couramment des opérations de cryptage (ssh, https…) et par conséquent consomme régulièrement des données dans /dev/random.
L’OS ajoute des données dans /dev/randow avec les I/O en provenance d’accès disques, I/O réseau, périphériques (clavier, souris…).
Donc au final le système consomme plus rapidement qu’il n’ajoute de données dans /dev/random. Ce phénomène est particulièrement observé dans les environnements virtualisés.

Mais comment vérifier que le système manque d’entropy

Vérifier la taille du système

$ cat /proc/sys/kernel/random/poolsize
 4096

Vérifier la valeur courante

 $ cat /proc/sys/kernel/random/entropy_avail
 125

Monitorer l’évolution de l’entropy de mon système

$ for i in $(seq 500); do cat /proc/sys/kernel/random/entropy_avail ; sleep 5; done

Ok mais comment corriger cela

Il suffit tout simplement de forcer la sécurité de la JVM à utiliser /dev/./urandom plutôt que /dev/random. Pour cela il suffit d’ajouter le paramètre ci-dessous à la ligne de commande de démarrage de la JVM Weblogic. Attention le « . » dans le path est important.

-Djava.security.egd=file:/dev/./urandom
Jean-nicolas Marquis
Jean-nicolas Marquis
Voir tous ses articles

Laisser un commentaire Annuler la réponse

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Articles récents
  • Azure Database pour PostgreSQL [PaaS]
  • Azure Logic Apps : l’outil d’intégration Cloud de Microsoft
  • Purge automatique des archivelogs en PL/SQL
  • ASM et l’importance du usable_file_mb
  • Préparer un Windows Server 2003 pour une migration sur Azure

Mentions légales & Politique de confidentialité

En poursuivant votre navigation, vous acceptez l'utilisation de cookies tiers destinés à réaliser des statistiques de visites et de suivi. Accepter Refuser Personnaliser En savoir plus
Politique de confidentialité et cookies

Politique de confidentialité

Les informations collectées au travers de nos cookies sont exploitées à des fins statistiques (Google Analytics).
Google Analytics
Enregistrer & appliquer