.NET性能排查
概述
1,性能参数
2,性能排查方式
3,.NET的性能分析工具
1,性能指标
一个系统的性能排查或者性能设计的前提就是要有明确的性能指标;常见的性能参数
1、响应时间(处理任务时的延迟,简称 RT,指的是业务从客户端发起到客户端接受的时间)。
2、吞吐量(简单讲就是系统在每单位时间内能处理多少个事务/请求/任务数据等)。
3、资源使用率(常见的资源有:CPU、内存、磁盘I/O、网络I/O)。
4、点击数(单位时间内,系统响应客户的请求,是系统处理能力的一个很有用的指标)。
5、并发用户数(并发用户数用来度量服务器并发容量和同步协调能力)。
6、数据库操作时间(属于响应时间的一部分)。
关于吞吐量,我们常常会遇到这样几个参数
TPS:就是我们通常说的吞吐量,也是服务端的每秒处理事务率,通常更关注TPS;可以衡量一个服务端或者系统的处理数据性能
QPS:是数据的每秒查询率,反映系统能抗住的用户的并发请求数压力
RPS:是阿里提出比较重要的性能指数,是每秒处理事务率
HPS:是用户每秒发起的请求率
PV:PV是page view的简写。PV是指页面的访问次数,每打开或刷新一次页面,就算做一个pv
重点说明一下
TPS:
系统整体TPS取决于处理能力最低模块的TPS值
TPS总是低于QPS
系统的性能由 TPS 决定,跟并发用户数没有多大关系
系统的最大 TPS 是一定的(在一个范围内),但并发用户数不一定,可以调整
系统的性能由 TPS 决定,跟并发用户数没有多大关系系统的最大 TPS 是一定的(在一个范围内),但并发用户数不一定,可以调整
从工作实践经验来看,大部分系统(常规复杂度的,别拿低复杂度的系统来杆)的TPS能在一台2核8G内存的阿里云ECS达到2000已经是非常优秀了;(我们公司系统在行业内也算是做的很靠前了,TPS的平均水平也只在1500,老系统,调用链比较长)
TPS的描述
a.向服务器发请求
b.服务器自己的内部处理(包含应用服务器、数据库服务器等)
c.服务器返回结果给客户端
如果每秒能够完成N次这三个过程,TPS就是N
确定系统的性能指标
以响应和吞吐为核心指标,确定可量化的指标来衡量性能(不能使用主观的判断来确定性能指标);如下示例
在不超过1000个并发活跃请求的情况下,历史订单页面从请求开始不超过300ms
在不超过1000个并发活跃请求的情况下,应用服务器的cpu不得超过50%
不同的指标检测的级别不同:
内存分配,执行时间可以在系统级别,进程级别,独立方法,代码块上
相对于一个整体的cpu占用率,或者一个进程级别的占用时间;
特定方法的执行时间是一个更有效的执行指标
2,性能排查方法
做性能排查前,先想想怎么样的优化才算性能提高?
单个请求的响应时间未减少,但是单位时间内的处理的请求数增加了,这也是性能的提高
能顶住1000W的请求,但是响应时间超过1分钟,这样没有意义
响应时间很短,但是吞吐量太低,也没有意义(100毫秒响应,每秒只能处理10个用户下单请求......)
一般情况下:
吞吐量越大,往往响应会越差
响应越好,能支持的吞吐量就会越高
如果吞吐量很少,响应会非常稳定
如何进行性能排查,猜测的结果是不可靠的;根据应用程序的复杂度,所需要的信息类型,结果的精确度,是有不同的测试方法
白盒测试:先审查源代码,在书面/白板上分析它的复杂度,然后修改源码,插入测量代码;尤其是想知道精确的结果和了解使用的cpu指令时,
缺点:太过耗时,对于大型应用不够灵活
黑盒测试:先明确测试指标,再用工具进行测试,不需要事先识别性能的瓶颈
缺点:没有测试工具能做到能给出精确的测试数据的同时而不给系统的执行效率带来负面影响
3,NET的性能分析工具
....待更新
最新文章
- VS2010 release编译下进行调试,“当前不会命中任何断点,还没有为文档加载”问题解决方案
- CSV表格读取
- Winform文件下载之WinINet
- 说说markdown和latex的简单比较
- backBarButtonItem 替换
- string用法
- node工具--connect
- php大力力 [005节] php大力力简单计算器001
- CentOS7区域设置
- 问题-RZ安装后报错“RzBorder.pas”
- MySQL多实例配置(两)
- Python学习笔记进阶篇——总览
- 不会git的程序员,会不会被鄙视?
- Guangcong Wang王广聪的主页
- Cookiecutter: 更好的项目模板工具:(2)安装及基础使用
- VS 2010解决方案添加头文件和动态库
- C#中三层架构UI、BLL、DAL、Model实际操作
- 可以搜索局域网内的所有IP地址的软件
- [NOI 2015]寿司晚宴
- (转)Oracle与DB2在数据库高可用技术上的相同与差异探讨
热门文章
- C#LeetCode刷题之#532-数组中的K-diff数对(K-diff Pairs in an Array)
- C#LeetCode刷题之#414-第三大的数(Third Maximum Number)
- 一文读懂GaussDB(for Mongo)的计算存储分离架构
- RoBERTa:一个调到最优参的BERT
- 5年Java程序员,五面蚂蚁险拿offer定级P7,大厂面试不过如此?
- SpringMVC实现客户端跳转
- Linux 将文件打包、压缩并分割成指定大小
- Reinforcement learning in artificial and biological systems
- Java——注解
- 开源搜索引擎排名第一,Elasticsearch是如何做到的?