wsadmin tool performance tips
The following performance tips are for the wsadmin tool:
- If the deployment manager is running at a higher fix pack level than the that of the node agent, run wsadmin.sh or wsadmin.bat from the bin directory of the deployment manager. See Installing interim fixes and fix packs for more information.
- When you launch a script using the wsadmin.bat or wsadmin.sh files, a new process is created with a new Java virtual machine (JVM) API. If you use scripting with multiple wsadmin -c commands from a batch file or a shell script, these commands execute slower than if you use a single wsadmin -f command. The -f option runs faster because only one process and JVM API are created for installation and the Java classes for the installation only load once.
The following example executes multiple application installation commands from a batch file:
Using 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}"
Using 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]')"
Or, for example, using Jacl, you can create the following file, appinst.jacl, that contains the commands:
$AdminApp install c:\\myApps\\App1.ear {-appname appl1} $AdminApp install c:\\myApps\\App2.ear {-appname appl2} $AdminApp install c:\\myApps\\App3.ear {-appname appl3}Then invoke this file using: wsadmin -f appinst.jacl
Or, for example, using Jython, you can create the following file, appinst.py, that contains the commands:
AdminApp.install('c:\myApps\App1.ear', '[-appname appl1]') AdminApp.install('c:\myApps\App2.ear', '[-appname appl2]') AdminApp.install('c:\myApps\App3.ear', '[-appname appl3]')
Then invoke this file using: wsadmin -lang jython -f appinst.py
- Use the AdminControl queryNames and completeObjectName commands carefully with a large installation. For example, if there are only a few beans on a single machine, the $AdminControl queryNames * command performs well. If a scripting client connects to the deployment manager in a multiple machine environment, use a command only if it is necessary for the script to obtain a list of all the Mbeans in the system. If you need the Mbeans on a node, it is easier to invoke "$AdminControl queryNames node=mynode,*". The JMX system management infrastructure forwards requests to the system to fulfill the first query, *. The second query, node=mynode,* is targeted to a specific machine.
- The WebSphere Application Server is a distributed system, and scripts perform better if you minimize remote requests. If some action or interrogation is required on several items, for example, servers, it is more efficient to obtain the list of items once and iterate locally. This procedure applies to actions that the AdminControl command performs on running MBeans, and actions that the AdminConfig command performs on configuration objects.