dotMemory 2025.2 Help

在 Docker 容器中分析应用程序

要分析运行在 Docker 容器中的 .NET 应用程序,请使用 dotMemory 命令行分析器。 要下载分析器并开始分析会话,您需要能够访问容器的 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. 在容器中,下载并解压 dotMemory 命令行工具,例如到 dotMemoryclt 文件夹:

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

    这里:

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

    • JetBrains.dotMemory.Console.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 的进程的快照:

      ./dotMemoryclt/tools/dotmemory get-snapshot 1
    • 要附加到 PID 为 1 的进程:

      ./dotMemoryclt/tools/dotmemory attach 1

      要获取快照,请使用标准输入消息:

      ##dotMemory["get-snapshot"]

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

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

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

  9. 将工作区文件复制到主机。 为此,请在主机上运行以下命令:

    docker cp {container_ID_or_name}:/{path_to_workspace_file} {path_to_folder_on_host_machine}

    例如:

    docker cp my-aspnet-app-container:/app/[1]-dotnet.2023-03-24T16-10-18.136.dmw "/home/username/Documents/Workspaces"
  10. 分析收集的快照

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