性能问答>求教,对 Azure Kubernetes pod 的线程分析遇到问题>
3回复

求教,对 Azure Kubernetes pod 的线程分析遇到问题



背景:

第一次上手kubernetes,在运行 kafka 流处理程序时,为了调试一个问题,想对正在运行的 pod 进行线程分析。

以下是步骤:

  1. 使用以下 docker 文件构建程序。

    FROM mcr.microsoft.com/java/jdk:11-zulu-alpine
    RUN apk update && apk add --no-cache gcompat
    RUN addgroup -S user1 && adduser -S user1 -G user1
    USER user1
    WORKDIR .
    COPY target/my-application-1.0.0.0.jar .
  2. 使用以下部署 yaml 文件提交图像

apiVersion: apps/v1 kind: Deployment metadata: name: my-application-v1.0.0.0 spec: replicas: 1 selector: matchLabels: name: my-application-pod app: my-application-app template: metadata: name: my-application-pod 标签:名称:my-application-pod 应用程序:my-application-app 规范:nodeSelector:agentpool:agentpool1 容器:-名称:my-application-0 图像:myregistry.azurecr.io/my-application: v1.0.0.0 imagePullPolicy:始终命令:["java","-jar","my-application-1.0.0.0.jar","input1","$(connection_string)"] env: - name: connection_string valueFrom : configMapKeyRef: name: my-application-configmap key: connectionString resources: limits: cpu: "4" requests: cpu: "0.5"

  1. 要获取运行容器的 shell,您可以运行以下命令:

    kubectl exec -it <POD_NAME> -- sh

  2. 在命令下运行线程堆栈分析

    jstack PID > threadDump.tdump

但获得权限被拒绝错误 在此处输入图片说明

请教大家,问题到底出在哪里?

113 阅读
请先登录,再评论

你可能需要在本地进行线程对dump分析,所以试试绕过在 pod 中创建文件,并将其直接导出到本地:

当然线程文件太大,可能需要首先考虑管道pv一下,用进度条~

5月前
回复 庆煌:

谢谢🙏

5月前回复
回复 庆煌:
kubectl exec -i POD_NAME -- jstack 1 > threadDump.tdump
5月前回复