0
点赞
收藏
分享

微信扫一扫

NetCore性能排查

@[toc]

一、性能排查

  • 性能的概念

    性能的来源于系统。

    系统分为两类:web系统【BS】和客户端【桌面】系统【CS】。

  • 性能的指标根据

    两个根据:

    1. 数量 客户端执行接口的数量,也就是1秒钟能执行多少个请求接口,处理的越多,性能越高。

    2. 时间 从客户端请求到服务端并响应请求产生的时间称之为 性能时间;时间越短性能越高。

      如图:

    在这里插入图片描述

    时间和数量是一个矛盾关系:时间越短执行的数量越多【吞吐量】,时间越长执行的数量越少。

    性能的起点在于执行一次接口的执行时间。

  • 获取系统接口执行时间

    工具:

    1. Apche JMeter 【常用】
    2. ApcheBench(ab)命令行工具【常用】
    3. Gatling
    4. K6
    5. Locust
    6. West Wind WebSurge
    7. Netling
    8. Vegeta
    9. NBomber
  • 性能诊断

    • 工具
    1. VS自带的性能探测器
    • CPU使用率上升的原因
    1. while for循环

      解决方案:使用Hash表寻存储数据

    2. 文件操作

      解决方案:异步IO DoNetty

    3. 网络连接和网络数据传输

      解决方案:使用缓存的方式存储数据 或者 使用异步IO多路复用机制

      CPU使用率上升的缺陷:

      处理接口并发量的能力下降

      系统的吞吐量下降

  • 性能排查落地

    • 条件

    • NET CORE 3.1 SDK 或 更高级版本
    • dotnet-counters 检查托管内存的使用情况
    • dotnet-dump 收集和分析转储文件

    • 步骤
    1. 创建内存溢出项目

    2. 安装dotnet-counters 准备

      dotnet tool install --global dotnet-counters
    3. 找到进程编号

      dotnet-counters ps
    4. 监视进程

      dotnet-counters monitor --refresh-interval 1 -p [进程编号]
    5. 最后查看显示统计信息

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

    6. dotnet-dump 安装

      dotnet tool install --global dotnet-dump 
    7. 然后执行项目接口

      运行项目

    8. 生成转储文件

      dotnet-dump collect -p [进程编号]
    9. 然后分析转储文件

      dotnet-dump  analyze [转储文件名称]
    10. 开始分析

      dumpheap -stat
    11. 分析类型的具体对象

      dumpheap -mt [类型编号]
    12. 找出应用根

      gcroot -all [对象编号]
举报

相关推荐

0 条评论