如何收集人工线程转储?

阿里尔Kabov
2023-01-22还剩11分08秒

对以下方法进行了排序和优先级排序。

在某些方法中,需要获取tomcat进程的PID。
在Windows上:$ netstat -ano | findstr
*与<口>为正在运行的端口人工id(默认为8081)

在Linux上使用:$ ps -aef | grep Java

方法#1 -跑步$ kill -3
线程转储将被打印到catalina.out文件。

请注意,当Artifactory不作为服务运行时,转储将转到运行服务器的shell会话的STDOUT,而不会转到时间戳catalina.out文件。

方法#2 -使用支持包的内置线程转储收集器

方法#3 -使用“JStack”

  • 导航到“{JAVA_HOME} / bin
  • *运行$ ./jstack -l > "artifactory。美元(日期+ Y % m % d % H % % % S) .td”

*注意用户执行jstack必须是拥有JVM进程或具有访问它的足够特权的同一用户(意味着通常必须以“artifactory”用户的身份运行该进程)。