『性能调优』在生产环境中,.Net如何定位系统内存泄露具体位置

简介: 📣读完这篇文章里你能收获到 - 生产环境排查内存问题的工具 - 排查命令的使用- 排查经验分享

请添加图片描述
📣读完这篇文章里你能收获到

  • 生产环境排查内存问题的工具
  • 排查命令的使用
  • 排查经验分享

请添加图片描述

一、前提条件

  • 定位环境:生产环境
  • .NET Core 3.1 SDK 或更高版本。
  • dotnet-counters 检查托管内存的使用情况。
  • dotnet-dump 收集和分析转储文件。

请添加图片描述

二、排查步骤

1. 项目准备

  1. 创建内存溢出的项目

2. dotnet-counters准备

  1. 先安装dotnet-counters

    dotnet tool install --global dotnet-counters
    AI 代码解读

在这里插入图片描述

  1. 然后找到进程编号

    dotnet-counters ps
    在这里插入图片描述

  2. 然后监视进程

    dotnet-counters monitor --refresh-interval 1 -p 10232 (进程编号)
    在这里插入图片描述

  3. 最后查看显示统计信息

    找到 GC Heap Size 。然后统计这个程序的增长,为了找出内存泄露的代码

在这里插入图片描述
在这里插入图片描述

3. dotnet-dump准备

  1. 先安装dotnet-counters

    dotnet tool install --global dotnet-dump
    在这里插入图片描述

  2. 然后生成转储文件(内存文件)

    dotnet-dump collect -p 10232 (进程编号)

在这里插入图片描述

  1. 然后分析转储文件

    dotnet-dump analyze dump_20210825_225811.dmp(转储文件名)
    在这里插入图片描述

请添加图片描述

三、结果分析

1. 找到内存比较大的类型,通过查看内存占用大小和对象数量

dumpheap -stat
在这里插入图片描述
直接拉到最下面,看最大的对象
在这里插入图片描述

2. 然后分析类型具体对象

dumpheap -mt 00007ffe88612360 为类型编号
在这里插入图片描述

3. 然后找出的应用根(目的是找出在哪里被引用了)

gcroot -all 000002c054600480 对象编号
随便找一个引用,以最后一个来看

在这里插入图片描述

到这一步已经可以排查出是Employee里边导致的,接着排查代码

在这里插入图片描述

这里数据没能GC回收是由于对象的运行时间比析构队列的长导致GC无法回收,实际上可能有其他稀奇古怪的各种原因,定位到代码以后剩下的都好排查了

目录
打赏
0
1
1
0
37
分享
相关文章
阿里云内存型实例规格性能、价格、适用场景与选型指南参考
阿里云服务器ECS(Elastic Compute Service)提供了多样化的内存型实例规格族,专为需要高性能内存资源的应用场景设计。从最新的r8a系列到经过优化的re6p系列,阿里云内存型实例旨在提供稳定、高效且安全的计算环境。这些实例不仅具备强大的计算性能与内存配比,还通过支持ESSD云盘和高效网络协议,显著提升了存储I/O能力和网络带宽,适用于大数据分析、高性能数据库、内存密集型应用等多种场景。本文将详细解析阿里云ECS中的多个内存型实例规格族,包括它们的核心特点、适用场景、实例规格及具体指标数据,为用户在选型时提供参考。
阿里云内存型实例规格性能、价格、适用场景与选型指南参考
阿里云服务器内存型实例怎么选?r7/r8y/r8i实例性能、适用场景与选择参考
在选择阿里云服务器时,针对内存密集型应用和数据库应用,内存型实例因其高内存配比和优化的性能表现,成为了众多用户的热门选择。在目前阿里云的活动中,内存型实例主要有内存型r7、内存型r8y和内存型r8i实例可选。为了帮助大家更好地了解这三款实例的区别,本文将详细对比它们的实例规格、CPU、内存、计算、存储、网络等方面的性能,并附上活动价格对比,以便用户能够全面了解它们之间的不同,以供选择和参考。
阿里云服务器实例选购指南:经济型、通用算力型、计算型、通用型、内存型性能与适用场景解析
当我们在通过阿里云的活动页面挑选云服务器时,相同配置的云服务器通常会有多种不同的实例供我们选择,并且它们之间的价格差异较为明显。这是因为不同实例规格所采用的处理器存在差异,其底层架构也各不相同,比如常见的X86计算架构和Arm计算架构。正因如此,不同实例的云服务器在性能表现以及适用场景方面都各有特点。为了帮助大家在众多实例中做出更合适的选择,本文将针对阿里云服务器的经济型、通用算力型、计算型、通用型和内存型实例,介绍它们的性能特性以及对应的使用场景,以供大家参考和选择。
快速定位并优化CPU 与 JVM 内存性能瓶颈
本文介绍了 Java 应用常见的 CPU & JVM 内存热点原因及优化思路。
811 166
阿里云服务器ECS内存型2核16G、4核32G和8核64G配置实例、费用和性能参数表
本文整理了2025年阿里云服务器租赁价格表,涵盖2核16G、4核32G和8核64G配置收费标准。CPU内存比为1:8,提供多种实例规格如ECS内存型r8i、通用算力型u1等。价格由CPU内存、公网带宽及系统盘组成,支持优惠折扣(年付6.7折起)。文中详细列出各配置参考价格、公网带宽与系统盘收费,并对比不同实例规格性能,如Intel Xeon和AMD EPYC处理器系列,帮助用户选择高性价比方案。具体价格以阿里云官网为准。
329 4
如何快速定位并优化CPU 与 JVM 内存性能瓶颈?
如何快速定位并优化CPU 与 JVM 内存性能瓶颈?
104 0
如何快速定位并优化CPU 与 JVM 内存性能瓶颈?
如何使用内存监控工具来定位和解决Node.js应用中的性能问题?
总之,利用内存监控工具结合代码分析和业务理解,能够逐步定位和解决 Node.js 应用中的性能问题,提高应用的运行效率和稳定性。需要耐心和细致地进行排查和优化,不断提升应用的性能表现。
307 77
如何优化Node.js应用的内存使用以提高性能?
通过以上多种方法的综合运用,可以有效地优化 Node.js 应用的内存使用,提高性能,提升用户体验。同时,不断关注内存管理的最新技术和最佳实践,持续改进应用的性能表现。
339 62
使用 BenchmarkDotNet 对 .NET 代码进行性能基准测试
使用 BenchmarkDotNet 对 .NET 代码进行性能基准测试
157 13
如何使用内存监控工具来优化 Node.js 应用的性能
需要注意的是,不同的内存监控工具可能具有不同的功能和特点,在使用时需要根据具体工具的要求和操作指南进行正确使用和分析。
160 31

热门文章

最新文章

AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等

登录插画

登录以查看您的控制台资源

管理云资源
状态一览
快捷访问