有没有办法在为 Dataflow 作业创建的虚拟机上运行 jstack?我正在尝试查看作业在哪里花费了大部分 CPU 时间,但我找不到它已安装。
谢谢,G
有没有办法在为 Dataflow 作业创建的虚拟机上运行 jstack?我正在尝试查看作业在哪里花费了大部分 CPU 时间,但我找不到它已安装。
谢谢,G
我发现可行的解决方法:
sudo docker ps
sudo docker exec -i -t 9da88780f555 bash
(将容器 id 替换为在步骤 2 中找到的那个)apt-get install openjdk-7-jdk
/usr/bin/jstack 1437
此Github 问题更新--enableProfilingAgent
包括一些使用该选项获取配置文件的基本说明。
这不能回答您问题的“和其他工具”部分,但是:Dataflow 工作人员运行一个本地 http 服务器,您可以使用它来获取一些信息。您可以使用以下方法获取线程转储,而不是使用 jstack:
curl http://localhost:8081/threadz
我对 jstack 不熟悉,但根据 Google 的快速搜索,看起来 jstack 是一个独立于 JVM 运行的工具,只需要一个 PID。因此,您可以在作业运行时执行以下操作。
这对你有用吗?您是否尝试从代码中运行 jstack 以自动对其进行分析?