NetCore性能排查

文章目录

一、性能排查

  • 性能的概念

    性能的来源于系统。

    系统分为两类: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
      
      1. 分析类型的具体对象

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

        gcroot -all [对象编号]
        
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值