在 WebLogic Server 中获取线程转储的各种方法 (文档 ID 1532594.1)

来源:互联网 发布:oppor9切换4g网络设置 编辑:程序博客网 时间:2024/05/16 19:36
在 WebLogic Server 中获取线程转储的各种方法 (文档 ID 1532594.1)转到底部转到底部

In this Document

Main Content 用途 在 WebLogic Server 中获取线程转储的各种方法 References

APPLIES TO:

Oracle Weblogic Server - Version 8.1 and later
Information in this document applies to any platform.

MAIN CONTENT

用途

本文提供了有关在 WebLogic Server 环境中获取 java 线程转储的各种方法的信息。

线程转储是指用于分析和排除与性能相关的问题(例如,服务器挂起、死锁、运行缓慢、应用程序闲置或卡住、数据库交互缓慢,等等)的基本诊断信息。

 

在 WebLogic Server 中获取线程转储的各种方法

WebLogic Server (WLS) 和 Java 提供了若干用来生成线程转储的方法,详细信息如下。建议始终通过使用操作系统 (OS) 命令来获取线程转储,而不是使用 Java 类或管理控制台。因为如果控制台正处于挂起状态,用户将不能连接到它来生成线程转储。

 

  1. 在 WLS 从命令行脚本启动时,使用操作系统命令来获取线程转储:
    • 在 Windows OS 上,可以通过以下命令创建线程转储
      <ctrl>+<break> -- 线程转储将生成到服务器标准输出中
    • 在与 POSIX 兼容的平台(例如,Solaris 和 Linux)上,首先使用 ps -ef | grep java 识别进程 ID (pid),然后运行
      kill -3 <pid> 2>&1
      信号 3 相当于 SIGQUIT。请注意,在 Solaris 中,线程转储在当前的 shell 中生成,但在 Linux 中,线程转储在启动 pid 指定的 java 进程的 shell 中生成.
  2. 使用 beasvc(适用于 WLS 10.3.5 以及之前的版本):
    beasvc -dump -svcname:<service_name>
    • service_name 是运行服务器实例的 Windows 服务(例如,mydomain_myserver)
  3. 使用 wlsve(从 10.3.6 到 12.1.1):
    wlsve -dump -svcname:<service_name>
  4. 使用 weblogic.WLST:
    setDomain.cmd or setDomain.sh depending on the OS
    java weblogic.WLST
    connect("<username>","<password>","t3://<url>:<port>")
    threadDump()
    线程转储将在 Thread_Dump_AdminServer.txt 中生成。Note 1274713.1 通过一个示例对 WLST 线程转储作了详细介绍。此示例是关于如何定义每个转储之间的休眠时间和要进行的转储次数.
  5. 在命令行或 shell 中,可以通过以下命令(在 WLS 9.0 中已弃用)生成线程转储:
    setDomain.cmd or setDomain.sh depending on the OS
    java weblogic.Admin <url>:<port> -username <username> -password <password> THREAD_DUMP
    线程转储将生成在规定的服务器标准输出中.
  6. 在 WLS 管理控制台中,可以通过导航到“服务器”->“<server_name>”->“监视”->“转储线程堆栈”来创建线程转储。此方法可能会导致线程转储被截断或不完整.
  7. 在服务管理工具中,当 WLS 作为一项 Windows 服务运行时,请参阅  Note 1348645.1
  8. Java VisualVM 还可用于在应用程序运行时进行线程转储,有关更多详细信息,请参阅 http://docs.oracle.com/javase/6/docs/technotes/guides/visualvm/applications_local.html 
  9. 用 jstack:
    jstack <pid> or jstack -l <pid> to print additional information about locks
  10. 从 JRockit 命令行中:
    jrcmd <pid> print_threads
0 0