谷歌云数据流虚拟机上的jstack和其他工具

时间:2015-01-05 15:33:44

标签: google-cloud-dataflow

有没有办法在为Dataflow作业创建的VM上运行jstack? 我正在努力查看作业占用大部分CPU时间的位置,但我找不到它。

谢谢, ģ

4 个答案:

答案 0 :(得分:1)

我找到了解决方法:

  1. 登录计算机
  2. 找到运行的docker容器" python -m taskrunne"使用sudo docker ps
  3. 使用sudo docker exec -i -t 9da88780f555 bash连接到容器(将容器ID替换为步骤2中找到的容器ID)
  4. 使用apt-get install openjdk-7-jdk
  5. 安装openjdk-7-jdk
  6. 查找java可执行文件的进程ID
  7. 运行/usr/bin/jstack 1437

答案 1 :(得分:1)

Github issue update包含使用--enableProfilingAgent选项获取配置文件的一些基本说明。

答案 2 :(得分:1)

这不能回答您问题的“和其他工具”部分,但是: Dataflow工作程序运行本地http服务器,您可以使用它来获取一些信息。您可以使用以下命令获取线程转储,而不是使用jstack:

curl http://localhost:8081/threadz

答案 3 :(得分:0)

我不熟悉jstack,但基于快速Google搜索,jstack看起来像是一个独立于JVM运行的工具,只需要一个PID。因此,您可以在作业运行时执行以下操作。

  1. 使用gcutil ssh
  2. 将ssh导入其中一个VM
  3. 在VM上安装jstack。
  4. 运行ps -aux | grep java来识别java进程的PID。
  5. 使用您识别的PID运行jstack。
  6. 这对你有用吗?您是否尝试从代码中运行jstack以便自动对其进行分析?