dotTrace 2025.2 Help

在 Docker 容器中分析应用程序

要分析运行在 Docker 容器中的 .NET 应用程序,请使用 dotTrace 命令行分析器。 要下载分析器并开始分析会话,您需要能够访问容器的 shell。

  1. 登录运行 Docker 的主机。

  2. 为了能够与应用程序容器通信,我们必须知道其 ID 或名称。 要获取它们,请运行:

    docker ps

    示例输出:

    CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES e58110265dd6 my-aspnet-app "dotnet MyAspNetApp.…" 22 hours ago Up 22 hours 0.0.0.0:5142->5142/tcp my-aspnet-app-container

    这里 e58110265dd6 是容器 ID, my-aspnet-app-container 是名称。

  3. 在 Docker 容器内启动一个 shell 会话。 您可以根据镜像的操作系统使用不同的命令行解释器,例如, sh/bin/bash

    docker exec -it {container_ID_or_name} sh

    例如:

    docker exec -it my-aspnet-app-container sh
  4. 在容器中,下载并解压 dotTrace 命令行工具,例如到 dotTrace 文件夹:

    apt-get update -y && apt-get install -y wget && \ wget -O dotTraceclt.zip https://www.nuget.org/api/v2/package/JetBrains.dotTrace.CommandLineTools.linux-x64 && \ apt-get install -y unzip && \ unzip dotTraceclt.zip -d ./dotTrace && \ chmod +x -R dotTrace/*

    这里:

    • apt 是基于 Debian 系统的包管理器。 如果您的操作系统使用其他包管理器,请使用它代替 apt

    • JetBrains.dotTrace.CommandLineTools.linux-x64 是适用于 Linux x64 系统的包名称。 此名称会根据目标平台而有所不同。 此处 您可以找到适用于各种平台的完整包列表。

  5. 在您可以附加到要分析的进程之前,必须获取进程 ID:

    ps aux

    如果 ps 命令在您的 Linux 发行版中不可用,请使用以下命令安装它:

    apt-get update && apt-get install procps

    示例输出:

    # ps aux USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 0.0 1.2 276055932 200960 ? Ssl Mar23 0:21 dotnet MyAspNetApp.dll --urls http://*:5142 root 914 0.0 0.0 2480 580 pts/0 Ss 05:33 0:00 sh root 2171 0.0 0.0 6756 2940 pts/0 R+ 12:55 0:00 ps aux
  6. 分析进程。 例如,要附加到具有 PID 1 的进程并使用 stdin 消息获取快照:

    ./dotTrace/tools/dottrace attach 1 --service-input=stdin

    要获取快照,请发送:

    ##dotTrace["get-snapshot"]

    有关使用命令行工具的更多信息,请参阅相应的 主题

  7. 要停止分析并保存收集的数据,请按 Ctrl+C

  8. 要结束容器中的 shell 会话,请运行 exit

  9. 将快照文件复制到主机。 请注意,dotTrace 将快照保存为多个文件,例如, somename.dtpsomename.dtp.0000somename.dtp.0001 等。 因此,您应首先将它们放入容器中的一个归档文件中。 在主机上:

    1. 创建一个归档文件:

      docker exec my-aspnet-app-container sh -c "tar -czf /tmp/snapshot.tar.gz /app/somename.dtp*"
    2. 将归档文件复制到主机:

      docker cp my-aspnet-app-container:/tmp/snapshot.tar.gz /home/username/Snapshots/snapshot.tar.gz
    3. 解压归档文件:

      tar -xzf /home/username/Snapshots/snapshot.tar.gz -C /home/username/Snapshots
  10. 分析收集的快照

最后修改日期: 2025年 9月 28日