Weblogic 12.1.3执行线程dump命令报Unrecognized option: -url如何解决
WebLogic 12.1.3线程dump抓取报错解决方案
报错根因
- WebLogic 12.1.3版本已正式废弃
weblogic.Admin命令行工具,本次报错本质是CLASSPATH未正确加载WebLogic核心类,导致JVM将-url参数识别为非法的JVM启动参数,而非应用主类的入参。
可行解决方案
方案一:JDK自带jstack工具(最简便,无需WebLogic认证)
只要持有WebLogic进程的操作系统执行权限,就可以直接生成线程dump:
- 先查询WebLogic进程PID:
ps -ef | grep weblogic.Server - 执行dump命令:
jstack <替换为实际PID> > thread_dump_$(date +%Y%m%d%H%M%S).txt
方案二:官方推荐WLST脚本实现
- 进入WebLogic域的bin目录,执行
source setDomainEnv.sh(Linux)/setDomainEnv.cmd(Windows)初始化环境变量 - 新建
generate_dump.py脚本,内容如下:
connect('你的管理员用户名','你的管理员密码','t3://urltoweblogicadminserver:7101') # 替换为实际要抓取的目标服务器名称 cd('Servers/目标服务器名') threadDump() exit()
- 执行脚本:
java weblogic.WLST generate_dump.py
按指定间隔批量生成线程dump
以Linux环境为例,可直接通过shell脚本实现定时抓取,示例如下(每10秒抓取1次,共抓取10次,可按需调整参数):
# 替换为实际的WebLogic进程PID WEBLOGIC_PID=12345 # 抓取间隔,单位:秒 INTERVAL=10 # 总抓取次数 DUMP_COUNT=10 for i in $(seq 1 $DUMP_COUNT) do jstack $WEBLOGIC_PID > thread_dump_$(date +%Y%m%d_%H%M%S).log sleep $INTERVAL done
内容的提问来源于stack exchange,提问作者Ishank Jain
相关产品推荐
相关产品推荐

