1、weblogic816
C:\Documents and Settings\tony>java -cp E:\bea816\weblogic81\
server\lib\weblogic.jar weblogic.
Admin -url localhost:7001 -username weblogic -password weblogic THREAD_DUMP
Thread Dump has been printed to the servers standard out (by default, the shell
in which the server is running).
可以看到打印
成功!
但是在9版本并不能使用该方法
2、weblogic923
启动server,打开wlst.cmd
连接到启动的AdminServer
Connect(‘weblogic’,’weblogic’,’t3://127.0.0.1:7001’)
threadDump()
可以看到写到了一个叫Thread_Dump_AdminServer.txt的
文件里。
再次
运行threadDump(),将会覆盖该文件。
因为目前是只启动了一个server,所以在进行
dump的时候并没指定server,默认就对admin做了dump.
再启动一个server1.现在再次用不指定server的threadDump()仍旧只会产生admin的dump.
利用help命令,发现还有一个指定server的dump方法。
注意里面有个属性是是否写到文件,我这里是true.所以生成了dump文件.
3、weblogic10.0 for solarisx86
在soalris10上(weblogic10.0)操作wlst
工具来进行
线程堆栈成功。
wls:/mydomain/serverConfig> threadDump(writeToFile='true', fileName='/opt/bea10/threaddump1.txt')
......................
........................
.......................
"Reference Handler" waiting for lock java.lang.ref.Reference$[email=Lock@c2bce4]
Lock@c2bce4[/email] WAITING
java.lang.Object.wait(Native Method)
java.lang.Object.wait(Object.java:474)
java.lang.ref.Reference$ReferenceHandler.run(Reference.java:116)
"main" waiting for lock [email=weblogic.t3.srvr.T3Srvr@ff2b7c]
weblogic.t3.srvr.T3Srvr@ff2b7c[/email] WAITING
java.lang.Object.wait(Native Method)
java.lang.Object.wait(Object.java:474)
weblogic.t3.srvr.T3Srvr.waitForDeath(T3Srvr.java:747)
weblogic.t3.srvr.T3Srvr.run(T3Srvr.java:396)
weblogic.Server.main(Server.java:67)
The Thread Dump for server AdminServer
has been successfully written to /opt/bea10/threaddump1.txt
利用py文件来生成thread dump
(1).在已经进入了wlst的
环境下
wls:/testDomain/serverConfig> execfile('/opt/bea10/user_projects/domains/testDomain/bin/threaddumpadmin.py')
Connecting to
t3://192.168.0.55:7001 with userid weblogic ...
Successfully connected to Admin Server 'AdminServer' that belongs to domain 'testDomain'.
Warning: An insecure protocol was used to connect to the
server. To ensure on-the-wire security, the SSL port or
Admin port should be used instead.
Thread dump for the running server: AdminServer
"[ACTIVE] ExecuteThread: '5' for queue: 'weblogic.kernel.Default (self-tuning)'" RUNNABLE
sun.management.ThreadImpl.getThreadInfo0(Native Method)
sun.management.ThreadImpl.getThreadInfo(ThreadImpl.java:142)
weblogic.platform.VM15.threadDumpAsString(VM15.java:22)
....................
The Thread Dump for server AdminServer
has been successfully written to /opt/bea10/threaddump2.txt
Exiting
WebLogic Scripting Tool.
(2).没有进入wlst的情况
-bash-3.00# java -cp /opt/bea10/wlserver_10.0/server/lib/weblogic.jar weblogic.WLST threaddumpadmin.py
Initializing WebLogic Scripting Tool (WLST) ...
Welcome to WebLogic Server Administration Scripting Shell
Type help() for help on available commands
Connecting to
t3://192.168.0.55:7001 with userid weblogic ...
Successfully connected to Admin Server 'AdminServer' that belongs to domain 'testDomain'.
Warning: An insecure protocol was used to connect to the
server. To ensure on-the-wire security, the SSL port or
Admin port should be used instead.
Thread dump for the running server: AdminServer
"[STANDBY] ExecuteThread: '5' for queue: 'weblogic.kernel.Default
(self-tuning)'" waiting for lock
[email=weblogic.work.ExecuteThread@18a290f]
weblogic.work.ExecuteThread@18a290f[/email] WAITING
java.lang.Object.wait(Native Method)
....................
The Thread Dump for server AdminServer
has been successfully written to /opt/bea10/threaddump2.txt
Exiting WebLogic Scripting Tool.
下面是 threaddumpadmin.py的内容:
connect('weblogic','weblogic','t3://192.168.0.55:7001')
threadDump(writeToFile='true', fileName='/opt/bea10/threaddump3.txt')
exit()
另外还有一篇文章也是将如何使用wlst监控weblogic的,大家可以参考,附件wlst_v64大家可以到http://anselmo.homeunix.net/weblogic/weblogic%20tools/wlst_v64%20Folder/ 下载:如何使用wlst监控运行weblogic的内存使用情况
针对welbogic8.1.4,使用wlst_v64,检查正在运行的weblogic的内存使用情况。
1.1 准备环境
保证监控机器上,安装了java虚拟机(版本最好就是与weblogic8.1.4内java虚拟机一致的jdk142_05),下载了wlst_v64,并准备有weblogic8.1.4的weblogic.jar。
将wlst_v64目录下的wlst.jar、jython.jar,以及weblogic.jar,加入classpath中。并运行weblogic.WLST。
以windows系统为例,
CLASS
PATH="d:\wlst_v64\wlst.jar";"d:\wlst_v64\jython.jar";"D:\bea\weblogic81\server\lib\weblogic.jar"
java -classpath %CLASSPATH% weblogic.WLST
1.2 连接到要监控的domain,并浏览目录
在执行java -classpath %CLASSPATH% weblogic.WLST后出现
D:\wlst_v64>java -classpath
"d:\wlst_v64\wlst.jar";"d:\wlst_v64\jython.jar";"D:
\bea\weblogic81\server\lib\weblogic.jar" weblogic.WLST
Initializing WebLogic Scripting Tool (WLST) ...
Welcome to WebLogic Server Administration Scripting Shell
Type help() for help on available commands
wls:/(offline)>
使用connect命令连接到要监控的domain
wls:/(offline)> connect('weblogic','weblogic','t3://127.0.0.1:7001');
Connecting to weblogic server instance running at t3://127.0.0.1:7001 as username weblogic ...
Successfully connected to Admin Server 'myserver' that belongs to domain 'mydomain'.
wls:/mydomain/config>
执行runtime(),进入运行期参数目录
wls:/mydomain/config> runtime()
wls:/mydomain/runtime>
浏览目录至ServerRuntimes/需要监控的server实例名/JVMRuntime/需要监控的server实例名,例如
wls:/mydomain/runtime> cd('ServerRuntimes/myserver/JVMRuntime/myserver')
到达目录后,查看HeapFreeCurrent、HeapSizeCurrent等指标
wls:/mydomain/runtime/ServerRuntimes/myserver/JVMRuntime/myserver> get("HeapFreeCurrent")
287631720L
1.3 wlst背景介绍
WebLogic Scripting Tool 是一种用于编写 BEA WebLogic 域配置脚本的 BEA 工具。目前,在 BEA
dev2dev Web 站点上,WLST 可以作为 WebLogic 8.1 的开发人员发行版使用。在 WebLogic Server
9中随版本发布中已经包含 WLST 。
WLST 具有以下两个版本:
* WLST Online : 可用于查询和修改正在运行的 WebLogic Server 域。
* WLST Offline : 可用于在不具备正在运行的 WebLogic Server 域的情况下构建 WebLogic 域。
本文中介绍的就是使用WLST Online来监控运行weblogic的内存使用情况。
除了使用脚本方式,调用wlst。亦可以直接在java代码和ant任务中,调用wlst。
package wlst;
import java.util.*;
import weblogic.management.scripting.utils.WLSTInterpreter;
import org.python.util.InteractiveInterpreter;
/**
* Simple embedded wlst example that will connect to a running server
* and creates 2 servers and assigns them to a newly created cluster and exits
*
Title: EmbeddedWLST.java
*
Copyright: Copyright (c) 2004
*
Company: BEA Systems
* @author Satya Ghattu ()
*/
public class EmbeddedWLST
{
static InteractiveInterpreter interpreter = null;
EmbeddedWLST() {
interpreter = new WLSTInterpreter();
}
static void connect() {
StringBuffer buffer = new StringBuffer();
buffer.append("connect('weblogic','weblogic')");
interpreter.exec(buffer.toString());
}
static void createServers() {
StringBuffer buf = new StringBuffer();
buf.append("man1=create('msEmbedded1','Server')\n");
buf.append("man2=create('msEmbedded2','Server')\n");
buf.append("clus=create('clusterEmbedded','Cluster')\n");
buf.append("man1.setListenPort(8001)\n");
buf.append("man2.setListenPort(9001)\n");
buf.append("man1.setCluster(clus)\n");
buf.append("man2.setCluster(clus)\n");
buf.append("saveDomain()\n");
buf.append("print 'Script ran successfully ...' \n");
interpreter.exec(buf.toString());
}
public static void main(String[] args) {
new EmbeddedWLST();
connect();
createServers();
}
}
使用wlst online除了可以监控运行状态外,亦可以完成在weblogic console中可以进行的所有工作,包括建立jdbc连接池、jms队列、新建server、配置cluster等。详细可以参看wlst_v64中scripts目录下的例子。
使用wlst offline可以从无到有的创建出一个weblogic域,实现域创建的全部自动化。