@[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 [对象编号]
-