Conseils de performances de l'outil wsadmin
Suivez ces conseils pour optimiser les performances de l'outil wsadmin.
Les conseils de performances suivants concernent l'outil wsadmin :
Si le gestionnaire de déploiement est exécuté sur un niveau de maintenance plus élevé que celui de l'agent de noeud, vous devez exécuter wsadmin.sh ou wsadmin.bat à partir du répertoire bin du gestionnaire de déploiement.
- Lorsque vous lancez un script à l'aide de l'outil wsadmin, un nouveau processus est créé à l'aide d'une nouvelle API JVM (Java virtual machine. Si vous utilisez le scriptage avec plusieurs commandes wsadmin -c à partir d'un fichier de traitement par lots ou d'un script de shell, ces commandes sont exécutées plus lentement que si vous utilisez une seule commande wsadmin -f. L'option -f est exécutée plus rapidement car un seul processus et une seule API JVM sont créés pour l'installation et les classes Java pour l'installation ne sont chargées qu'une seule fois.
L'exemple ci-dessous indique comment les commandes d'installation d'application sont exécutées à partir d'un fichier de traitement par lots.
Remarque : Sur un système d'exploitation Unix, si vous appelez une commande contenant un signe dollar ($) à l'aide de l'option wsadmin -c, la ligne de commande tente de remplacer une variable. Pour éviter cet incident, placez une barre oblique inverse devant le signe dollar (\). Par exemple : wsadmin -c "\$AdminApp install ...".Avec Jacl :
wsadmin -c "$AdminApp install c:/myApps/App1.ear {-appname appl1}" wsadmin -c "$AdminApp install c:/myApps/App2.ear {-appname appl2}" wsadmin -c "$AdminApp install c:/myApps/App3.ear {-appname appl3}"
Avec Jacl :
ouwsadmin.sh -c "\$AdminApp install /myApps/App1.ear {-appname appl1}" wsadmin.sh -c "\$AdminApp install /myApps/App2.ear {-appname appl2}" wsadmin.sh -c "\$AdminApp install /myApps/App3.ear {-appname appl3}"
wsadmin.sh -c "$AdminApp install /myApps/App1.ear {-appname appl1}" wsadmin.sh -c "$AdminApp install /myApps/App2.ear {-appname appl2}" wsadmin.sh -c "$AdminApp install /myApps/App3.ear {-appname appl3}"
Avec Jacl :
wsadmin -c "$AdminApp install /home/myDir/myApps/App1.ear {-appname appl1}" wsadmin -c "$AdminApp install /home/myDir/myApps/App2.ear {-appname appl2}" wsadmin -c "$AdminApp install /home/myDir/myApps/App3.ear {-appname appl3}"
A l'aide de Jython :
wsadmin -lang jython -c "AdminApp.install('c:/myApps/App1.ear', '[-appname appl1]')" wsadmin -lang jython -c "AdminApp.install('c:/myApps/App2.ear', '[-appname appl2]')" wsadmin -lang jython -c "AdminApp.install('c:/myApps/App3.ear', '[-appname appl3]')"
A l'aide de Jython :
ouwsadmin.sh -lang jython -c "\AdminApp.install('/myApps/App1.ear', '[-appname appl1]')" wsadmin.sh -lang jython -c "\AdminApp.install('/myApps/App2.ear', '[-appname appl2]')" wsadmin.sh -lang jython -c "\AdminApp.install('/myApps/App3.ear', '[-appname appl3]')"
wsadmin.sh -lang jython -c "AdminApp.install('/myApps/App1.ear', '[-appname appl1]')" wsadmin.sh -lang jython -c "AdminApp.install('/myApps/App2.ear', '[-appname appl2]')" wsadmin.sh -lang jython -c "AdminApp.install('/myApps/App3.ear', '[-appname appl3]')"
A l'aide de Jython :
wsadmin -lang jython -c "AdminApp.install('/home/myDir/myApps/App1.ear', '[-appname appl1]')" wsadmin -lang jython -c "AdminApp.install('/home/myDir/myApps/App2.ear', '[-appname appl2]')" wsadmin -lang jython -c "AdminApp.install('/home/myDir/myApps/App3.ear', '[-appname appl3]')"
Autrement, par exemple, à l'aide de Jacl, vous pouvez créer le fichier appinst.jacl qui contient les commandes :
$AdminApp install c:/myApps/App1.ear {-appname appl1} $AdminApp install c:/myApps/App2.ear {-appname appl2} $AdminApp install c:/myApps/App3.ear {-appname appl3}
$AdminApp install /myApps/App1.ear {-appname appl1} $AdminApp install /myApps/App2.ear {-appname appl2} $AdminApp install /myApps/App3.ear {-appname appl3}
$AdminApp install /home/myDir/myApps/App1.ear {-appname appl1} $AdminApp install /home/myDir/myApps/App2.ear {-appname appl2} $AdminApp install /home/myDir/myApps/App3.ear {-appname appl3}
Appelez ce fichier à l'aide de la commande : wsadmin -f appinst.jacl
Autrement, à l'aide de Jython, vous pouvez créer le fichier appinst.py, qui contient les commandes :
AdminApp.install('c:/myApps/App1.ear', '[-appname appl1]') AdminApp.install('c:/myApps/App2.ear', '[-appname appl2]') AdminApp.install('c:/myApps/App3.ear', '[-appname appl3]')
AdminApp.install('/myApps/App1.ear', '[-appname appl1]') AdminApp.install('/myApps/App2.ear', '[-appname appl2]') AdminApp.install('/myApps/App3.ear', '[-appname appl3]')
AdminApp.install('/home/myDir/myApps/App1.ear', '[-appname appl1]') AdminApp.install('/home/myDir/myApps/App2.ear', '[-appname appl2]') AdminApp.install('/home/myDir/myApps/App3.ear', '[-appname appl3]')
Ensuite, appelez ce fichier à l'aide de la commande suivante : wsadmin -lang jython -f appinst.py.
Ensuite, appelez ce fichier à l'aide de la commande suivante : wsadmin.sh -lang jython -f appinst.py.
- Utilisez les commandes AdminControl queryNames et completeObjectName avec précaution dans une
installation de taille importante. Par exemple, s'il existe seulement quelques beans sur une machine, la commande $AdminControl queryNames * est également exécutée.
Si un client de scriptage se connecte au gestionnaire de déploiement dans un environnement multi-machines, utilisez une commande uniquement si elle est nécessaire pour que le script obtienne une liste de tous les beans gérés dans le système. Si vous avez besoin de beans gérés sur un noeud, il est plus facile d'appeler "$AdminControl queryNames node=mynode,*". L'infrastructure de gestion de système JMX transmet les requêtes au système afin de répondre à la première requête, *. La deuxième requête, node=mynode,* est transmise à une machine spécifique.
- WebSphere Application Server est un système réparti et les scripts s'exécutent mieux si vous réduisez au minimum le nombre de requêtes à distance. Si une action ou une interrogation est requise sur plusieurs éléments, par exemple, sur des serveurs, il est plus efficace d'obtenir la liste des éléments une seule fois et d'itérer en local. Cette procédure concerne toutes les actions que l'objet AdminControl effectue sur les beans gérés en cours d'exécution et les actions que l'objet AdminConfig effectue sur les objets de configuration.