如何从docker获取threaddump

ash*_*hok 5 ubuntu docker coreos

我的应用程序在 Docker 中运行核心操作系统和 Ubuntu。如何从这些系统收集线程转储来分析性能问题

我已经尝试过以下命令但它不起作用:

kill -3
jstack
docker exec
appsnap
Run Code Online (Sandbox Code Playgroud)

Aar*_*_ab 5

我有一个java在 docker 内运行的应用程序,我使用:docker exec -it <containerName> jstack > someFile.txt

只需确保定期收集即可更好地理解。

另外,您可以使用类似的应用程序yourkit来为您做这件事


d g*_*d g 0

https://access.redhat.com/solutions/18178(底部附件下)有几个 threaddump shell 脚本可以帮助您。

基本用法:

sh ./threaddump_linux.sh JAVA_PID
Run Code Online (Sandbox Code Playgroud)

您必须将其添加到您的 Dockerfile 或 exec 到您的容器中,然后手动安装并运行它。

使用它们的说明(以及其他线程转储技术)位于该页面上