wsadmin 工具性能技巧
遵循这些技巧以从 wsadmin 工具获得最优性能。
下列性能技巧用于 wsadmin 工具:
如果 Deployment Manager 正在运行的服务维护级别比节点代理程序的服务维护级别高,那么必须从 Deployment Manager 的 bin 目录运行 wsadmin.sh 或 wsadmin.bat。
- 当您使用 wsadmin 工具启动脚本时,将使用新的 Java 虚拟机 (JVM) API 创建新进程。如果您从批处理文件或 shell 脚本编制使用带有多个 wsadmin -c 命令的脚本编制,那么这些命令的运行速度将比使用单个 wsadmin -f 命令的速度要慢。-f 选项运行地更快,因为仅为安装创建一个进程和 JVM API 并且安装的 Java 类仅装入一次。
以下示例说明了从批处理文件中运行多个应用程序安装命令。
注: 在 Unix 操作系统上,如果您使用 wsadmin -c 选项调用一个包含美元符号 ($) 的命令,那么命令行将尝试替代一个变量。要避免此问题,请使用反斜杠字符 (\) 对美元符号字符进行转义。例如:wsadmin -c “\$AdminApp install ...”。使用 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}"
使用 Jacl:
或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}"
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}"
使用 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}"
使用 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]')"
使用 Jython:
或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]')"
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]')"
使用 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]')"
或,例如,使用 Jacl,您可以创建包含以下命令的 appinst.jacl 文件:
$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}
使用以下命令来调用此文件:wsadmin -f appinst.jacl
或使用 Jython,您可以创建 appinst.py 文件,它包含以下命令:
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]')
然后使用以下命令调用此文件:wsadmin -lang jython -f appinst.py。
然后使用以下命令调用此文件:wsadmin.sh -lang jython -f appinst.py。
- 对大安装谨慎地使用 AdminControl queryNames 和 completeObjectName 命令。例如,如果单个机器上仅存在很少的 Bean,那么 $AdminControl queryNames * 命令将很好地执行。
如果脚本编制客户机连接至一个多机器环境中的 Deployment Manager,只有当此脚本有必要获取系统中的所有 MBean 的列表时才使用命令。如果您在节点上需要 MBean,那么调用“$AdminControl queryNames node=mynode,*”更容易一些。JMX 系统管理基础结构将请求转发至系统,以便完成第一个查询 *。第二个查询 node=mynode,* 针对特定机器。
- WebSphere® Application Server 是分布式系统,如果将远程请求数目降至最低,脚本就能执行得更好。如果在一些项(例如,服务器)上需要某些操作或询问,一次获取项的列表并本地迭代更为有效。此过程适用于 AdminControl 对象在运行的 MBean 上执行的操作,以及 AdminConfig 对象在配置对象上执行的操作。