Accélérer les temps de démarrage du serveur Weblogic
à mon travail, nous utilisons un serveur Weblogic pour héberger un portail d'entreprise. Ce qui est bien.
Cependant, j'ai récemment eu l'occasion d'utiliser Tomcat pour certains projets, et je suis frappé par l'incroyable différence de vitesse. Tomcat met de 3 à 5 secondes pour démarrer, et de 10 à 15 secondes pour déployer des projets de taille moyenne. Wewblogic prend 3-5 minutes pour commencer, et jusqu'à 10 minutes à déployer. Cela tue tout développement itératif.
Suis-Je vais devoir me résigner à sa lenteur et de ballonnement, ou est-ce que je peux faire pour l'accélérer? Quelqu'un a une expérience avec cela?
8 réponses
vous ne pourrez pas transformer la grenouille en princesse. Je m'interroge un peu sur les temps de démarrage de weblogic - ils semblent un peu excessifs, vous n'utilisez pas linux par hasard ?
si vous utilisez des archives imbriquées (guerres dans les oreilles, etc.) et aussi des technologies de numérisation de répertoires (hibernation, printemps, etc.), vous pouvez essayer de tout déballer dans la structure explosée correspondante avant de le déployer; il a été connu pour aider un peu.
Tomcat contient très petit sous-ensemble des fonctionnalités de weblogic. Nous développer sur jetty mais déployer sur weblogic pour des environnements de réception / production et cela fonctionne assez bien. Tu peux faire la même chose avec tomcat.
Tomcat est un container assez strict tandis que weblogic est indulgent, donc vous aurez normalement que des problèmes mineurs se déployant à weblogic, surtout tant que vous faites continuellement les deux.
Vous pouvez également utiliser un outil comme javarebel pour faire vraiment chouette déploiement à chaud et éviter tout redémarrage.
comme l'a dit krosenvold, la génération de nombres aléatoires peut causer un démarrage lent.
la recommandation D'Oracle est d'utiliser l'un des indicateurs-d ci - dessous-uniquement sur les systèmes non productifs car cela diminue la sécurité.
Utiliser - Djava.sécurité.egd=file: / / / dev / urandom interrupteur ou file:/dev/./ urandom pour la commande qui démarre weblogic.
L'information ci-dessus est tirée de http://download.oracle.com/docs/cd/E12839_01/doc.1111/e14772/weblogic_server_issues.htm#CIHIIBGJ
si le drapeau-D ne fonctionne pas, regardez la solution suivante: http://www.itonguard.com/20090313/weblogic-starts-slow/
vous n'avez pas mentionné quel niveau et quelle plate-forme mais le WebLogic Server Performance and Tuning guide contient un certain nombre de trucs et astuces qui peuvent vous aider.
WebLogic peut aussi être lent à démarrer sur Linux s'il se connecte à une base de données et que vous n'avez pas configuré correctement DNS.
Selon votre configuration, vous pourriez être en mesure de modifier /etc/resolv.conf et commentez la ligne nameserver. Cela peut réduire le temps de démarrage de WebLogic de 20 minutes à moins d'une minute.
si vous utilisez Weblogic workshop, alors vous avez juste besoin de publier, pas de redémarrer le serveur d'application tout en faisant du développement itératif.
sur la question de la consommation de mémoire, vous pouvez essayer de définir les paramètres de mémoire de la JVM utilisée par votre serveur WebLogic. Connectez-vous à votre Console D'administration Web WL et allez à Environnement/Servers/[votre serveur]/Configuration/démarrage du serveur et, sur les "Arguments", définir quelque chose comme-Xms256m-Xmx256m va régler la taille initiale (Xms) et maximale (Xmx) de votre tas JVM à 256 mégaoctets. Vous voudrez jouer avec ces chiffres et trouver les meilleures valeurs pour votre environnement. Mais s'il vous plaît être conscient que votre Eclipse, par exemple, consomment beaucoup de mémoire.
en ce qui concerne la durée de démarrage, bien qu'un peu plus grande que je ne m'y attendais, ils semblent OK. Ce problème est très fréquent, et je ne pense pas que vous serez en mesure de certainement résoudre. WebLogic a beaucoup plus de fonctionnalités que Tomcat, et cela se reflète dans d'autres caractéristiques de l'environnement (comme le temps de démarrage).
il S'avère que Weblogic utilise le générateur de nombres aléatoires pendant le démarrage. À cause de l'insecte en java, on lit ‘randomness ' à partir de/dev / random. /dev/random est très bon générateurs de nombres aléatoires, mais il est extrêmement lent. Il faut parfois 10 minutes ou plus pour générer un nombre. /dev/urandom est pas bon, mais il est instantanée. Java en quelque sorte des cartes /dev/urandom fichier /dev/random. C'est pourquoi les paramètres par défaut dans $JAVA_HOME/jre/lib/security/java.la sécurité est inutile.
solutions Possibles: 1) Ajouter " - Djava.sécurité.egd=file:/dev/./urandom" (/dev/urandom ne fonctionne pas) à java paramètre.
Pire mais la solution de travail est: 2) mv /dev/random et /dev/random.Origine; ln / dev /urandom/dev / random
3) la meilleure solution est de changer $JAVA_HOME/jre/lib/security/java.sécurité Remplacez securerandom.source avec
securerandom.source=file: / dev/./ urandom
ce problème ne se produit pas sous windows car il utilise une implémentation différente de /dev/random.
Il faut quelques secondes pour démarrer le serveur weblogic maintenant.
veuillez vérifier que le long temps de démarrage est en fait dû au démarrage du serveur WebLogic et non au démarrage du portail WebLogic.
sur le démarrage standard de Weblogic 12.2.1 j'ai eu ce message:
Disabling the CryptoJ JCE Provider self-integrity check for better startup performance.
To enable this check, specify -Dweblogic.security.allowCryptoJDefaultJCEVerification=true
alors je l'ai spécifié et il a coupé le temps de démarrage en deux. Environ 13 secondes sur un domaine propre.