@[toc]
一、性能排查
性能的概念
性能的来源于系统。
系统分为两类:web系统【BS】和客户端【桌面】系统【CS】。
性能的指标根据
两个根据:
- 数量 客户端执行接口的数量,也就是1秒钟能执行多少个请求接口,处理的越多,性能越高。
时间 从客户端请求到服务端并响应请求产生的时间称之为 性能时间;时间越短性能越高。
如图:
时间和数量是一个矛盾关系:时间越短执行的数量越多【吞吐量】,时间越长执行的数量越少。
性能的起点在于执行一次接口的执行时间。
获取系统接口执行时间
工具:
- Apche JMeter 【常用】
- ApcheBench(ab)命令行工具【常用】
- Gatling
- K6
- Locust
- West Wind WebSurge
- Netling
- Vegeta
- NBomber
性能诊断
工具
- VS自带的性能探测器
CPU使用率上升的原因
while for循环
解决方案:使用Hash表寻存储数据
文件操作
解决方案:异步IO DoNetty
网络连接和网络数据传输
解决方案:使用缓存的方式存储数据 或者 使用异步IO多路复用机制
CPU使用率上升的缺陷:
处理接口并发量的能力下降
系统的吞吐量下降
性能排查落地
条件
- NET CORE 3.1 SDK 或 更高级版本
- dotnet-counters 检查托管内存的使用情况
- dotnet-dump 收集和分析转储文件
步骤
- 创建内存溢出项目
安装dotnet-counters 准备
dotnet tool install --global dotnet-counters
找到进程编号
dotnet-counters ps
监视进程
dotnet-counters monitor --refresh-interval 1 -p [进程编号]
最后查看显示统计信息
找到GC Heap Size 统计这个程序的增长,为了找出内存溢出的代码。
dotnet-dump 安装
dotnet tool install --global dotnet-dump
然后执行项目接口
运行项目
生成转储文件
dotnet-dump collect -p [进程编号]
然后分析转储文件
dotnet-dump analyze [转储文件名称]
开始分析
dumpheap -stat
分析类型的具体对象
dumpheap -mt [类型编号]
找出应用根
gcroot -all [对象编号]
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。