google 云数据流 VM 上的 jstack 和其他工具
jstack and other tools on google cloud dataflow VMs
有没有办法在为 Dataflow 作业创建的 VM 上运行 jstack?
我试图查看该作业花费大部分 CPU 时间的地方,但我找不到它已安装。
谢谢,
G
我不熟悉 jstack,但基于快速 Google 搜索,jstack 似乎是一个 运行 独立于 JVM 的工具,只需要一个 PID。因此,您可以在 运行 工作期间执行以下操作。
- 使用 gcutil ssh
ssh 进入其中一台虚拟机
- 在虚拟机上安装 jstack。
- 运行 ps -辅助 | grep java 识别 java 进程的 PID。
- 运行 jstack 使用您识别的 PID。
这对你有用吗?您是否正在尝试从您的代码中 运行 jstack 以便自动分析它?
我发现可行的解决方法:
- 登录机器
- 使用
sudo docker ps
找到运行"python -m taskrunne"的docker容器
- 使用
sudo docker exec -i -t 9da88780f555 bash
连接到容器(将容器 ID 替换为在步骤 2 中找到的 ID)
- 使用
apt-get install openjdk-7-jdk
安装 openjdk-7-jdk
- 查找 java 可执行文件的进程 ID
- 运行
/usr/bin/jstack 1437
此 Github issue update 包括使用 --enableProfilingAgent
选项获取配置文件的一些基本说明。
这并没有回答您问题的 "and other tools" 部分,但是:
Dataflow workers 运行 一个本地 http 服务器,你可以用它来获取一些信息。除了使用 jstack,您还可以通过以下方式获取线程转储:
curl http://localhost:8081/threadz
有没有办法在为 Dataflow 作业创建的 VM 上运行 jstack? 我试图查看该作业花费大部分 CPU 时间的地方,但我找不到它已安装。
谢谢, G
我不熟悉 jstack,但基于快速 Google 搜索,jstack 似乎是一个 运行 独立于 JVM 的工具,只需要一个 PID。因此,您可以在 运行 工作期间执行以下操作。
- 使用 gcutil ssh ssh 进入其中一台虚拟机
- 在虚拟机上安装 jstack。
- 运行 ps -辅助 | grep java 识别 java 进程的 PID。
- 运行 jstack 使用您识别的 PID。
这对你有用吗?您是否正在尝试从您的代码中 运行 jstack 以便自动分析它?
我发现可行的解决方法:
- 登录机器
- 使用
sudo docker ps
找到运行"python -m taskrunne"的docker容器
- 使用
sudo docker exec -i -t 9da88780f555 bash
连接到容器(将容器 ID 替换为在步骤 2 中找到的 ID) - 使用
apt-get install openjdk-7-jdk
安装 openjdk-7-jdk
- 查找 java 可执行文件的进程 ID
- 运行
/usr/bin/jstack 1437
此 Github issue update 包括使用 --enableProfilingAgent
选项获取配置文件的一些基本说明。
这并没有回答您问题的 "and other tools" 部分,但是: Dataflow workers 运行 一个本地 http 服务器,你可以用它来获取一些信息。除了使用 jstack,您还可以通过以下方式获取线程转储:
curl http://localhost:8081/threadz