页面树结构
转至元数据结尾
转至元数据起始

使用背景:
一般应用于服务器繁忙或是无响应时,我们需要看一下线程的状态和详细信息。


注意事项:
先不要重启服务器,在服务器无响应的时候执行下面获取步骤。

方式一:

进入jdk/bin,执行jvisualvm.exe

找到对应的线程号,然后进入线程 --> 线程 dump

将线程信息复制到文本发回即可

方式二:

执行命令行生成日志:

如果是使用Smartbi的安装包部署的,打开<smartbi>\Tomcat\bin目录并双击ThreadDump.cmd就可以生成线程堆栈日志文件。

如果单独使用war部署或Tomcat\bin目录中不存在ThreadDump.cmd,可以点击下载ThreadDump.cmd(Linux系统使用文件:ThreadDump.sh)和ThreadDump.jar,并放到Tomcat\bin目录中,先在cmd添加“cd tomcat\bin目录”,然后右键使用管理员身份执行该cmd文件生成线程堆栈(注意:请将ThreadDump.cmd或ThreadDump.sh文件中的jdk路径修改为服务器上的jdk路径)

使用Linux系统时将ThreadDump.sh和ThreadDump.jar通过FTP、SFTP等上传到Tomcat/bin目录中,通过SSH等连接到服务器进入Tomcat/bin目录并执行chmod 755 ThreadDump.sh令它可执行,再执行./ThreadDump.sh生成日志。

 

 

如果通过上述命令无法正常获取线程堆栈日志,请再以下步骤操作。


获取步骤:    
请在服务器无响应时,执行打印进程信息,打印线程信息有两个方法:
方法一:要求JDK版本为1.6及其以上版本。

  1. 在运行中打开cmd命令行窗口。
  2. 在cmd窗口进入JDK的bin目录下,执行jps获取进程信息,此处要保证执行的JDK是服务器使用的JDK。
  3. 获取对应线程号,然后执行jstack +进程号 > 进程号.log 获取线程信息 :Tomcat显示的名称应该是Bootstrap;WebLogic显示名称应该是Server
  4. 如果运行jps无法列出应用服务器的线程,则可以在Windows使用任务管理器,Unix上使用ps -ef|grep java命令等获取进程号,任务管理器进程号的查看方法:
  5. 还可以使用netstat -ano|find "访问的端口号"|find "LISTENING" 获取进程号(注意双引号是必须的)
  6. 再使用jstack 进程号 >进程号.log 获取线程信息,如果提示无法连接到JVM,可以增加-F参数强制生成jstack -F 进程号 >进程号.log

方法二:

  1. 如果方法一无法获取,您也可以试一下在服务器运行窗口按Ctrl+break按钮
  • 无标签