介绍

dotnet-dump 是 .NET Core 官方工具之一,用于生成和分析 .NET Core 进程的转储文件(dump file)。它可以帮助开发人员在应用程序发生故障或性能问题时进行故障排查和诊断。

Linux 系统上的软件包的工具

  • RedHat系列使用(Centos)
    yum
  • Debian系列使用
    apt

dotnet-dump安装

先安装dotnet-sdk

  1. 将 Microsoft 的官方包存储库配置文件安装到 CentOS 7 系统中
    sudo rpm -Uvh https://packages.microsoft.com/config/centos/7/packages-microsoft-prod.rpm
  2. 安装运行时
    sudo yum install dotnet-sdk-7.0
  3. 查看当前版本-是否安装成功
    dotnet --version
    image

安装dotnet-dump

安装最新的即可,我的代码是asp.core3.1 也可以高版本排查
dotnet tool install --global dotnet-dump
查看当前版本-是否安装成功
dotnet-dump --version
image

生成转储文件(内存文件)

dotnet-dump collect -p 10232

分析转储文件

dotnet-dump analyze core_20231222_201626
image

分析SOS命令

  1. 找到内存比较大的类型,通过查看内存占用大小和对象数量
    dumpheap -stat
    默认从小到大,直接拉到最下面,看最大的对象
    image
  2. 然后分析类型具体对象
    umpheap -mt 命令,您可以快速查找指定类型的对象,了解其在堆上的分布情况和内存占用情况。这对于定位内存泄漏、查找内存使用问题等非常有用。
    dumpheap 7f9d28ec8b68
    image
  3. 然后找出的应用根(目的是找出在哪里被引用了)
    gcroot 7f9a14da0448
    image

分析生产环境dump机器配置要高一点,4G大小的文件跑崩了

image

标签: none

添加新评论