乐趣区

关于性能优化: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 [对象编号]
退出移动版