概述

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的性能分析工具

....待更新

.NET性能排查的更多相关文章

  1. Sql Server CPU 性能排查及优化的相关 Sql

    Sql Server CPU 性能排查及优化的相关 Sql 语句,非常好的SQL语句,记录于此: --Begin Cpu 分析优化的相关 Sql --使用DMV来分析SQL Server启动以来累计使 ...

  2. Nginx 日志分析及性能排查

    Nginx 日志分析及性能排查 2017-03-04 Linux爱好者 (点击上方公众号,可快速关注) 作者:-外星人- my.oschina.net/362228416/blog/844713 如有 ...

  3. 重新整理 .net core 实践篇 ———— linux上性能排查 [外篇]

    前言 该文的前置篇为: https://www.cnblogs.com/aoximin/p/16839830.html 本文介绍性能排查. 正文 上一节是出现错误了,如何去排查具体问题. 这一节介绍一 ...

  4. Sql Server性能排查和优化懒人攻略

    转载自作者zhang502219048的微信公众号[SQL数据库编程]:Sql Server性能排查和优化懒人攻略 很多年前,笔者那时刚从广东技术师范学院(现为广东技术师范大学,以前为广东民族学院)的 ...

  5. mysql性能排查思路

      mysql性能瓶颈排查 top/free/vmstat/sar/mpstat 查看mysqld进程的cpu消耗占比 确认mysql进程的cpu消耗是%user, 还是sys%高 确认是否是物理内存 ...

  6. 一站式学习Wireshark(四):网络性能排查之TCP重传与重复ACK

    作为网络管理员,很多时间必然会耗费在修复慢速服务器和其他终端.但用户感到网络运行缓慢并不意味着就是网络问题. 解决网络性能问题,首先从TCP错误恢复功能(TCP重传与重复ACK)和流控功能说起.之后阐 ...

  7. Wireshark(四):网络性能排查之TCP重传与重复ACK

    原文出处: EMC中文支持论坛 作为网络管理员,很多时间必然会耗费在修复慢速服务器和其他终端.但用户感到网络运行缓慢并不意味着就是网络问题. 解决网络性能问题,首先从TCP错误恢复功能(TCP重传与重 ...

  8. 性能排查--CPU占用高

    排查思路: 1.先找到占用CPU高的进程PID    top命令 2.top -H -p <PID>  查看哪个占用CPU高的线程TID 3.jstack <PID>  /ho ...

  9. bfrd collector性能排查

     1.2.09上昨天timeout在18点23分-22点10分 2.检测2.17网卡流量,sar -f /var/log/sa/sa06 -n DEV,发现这段时间刚好是rxpck/s超过6400. ...

随机推荐

  1. C#LeetCode刷题之#100-相同的树(Same Tree)

    问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/4066 访问. 给定两个二叉树,编写一个函数来检验它们是否相同. ...

  2. C#LeetCode刷题之#728-自除数(Self Dividing Numbers)

    问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/3889 访问. 自除数 是指可以被它包含的每一位数除尽的数. 例如 ...

  3. Flutter 容器Container类和布局Layout类

    1.布局和容器 [布局]是把[容器]按照不同的方式排列起来. Scaffold包含的主要部门:appBar,body,bottomNavigator 其中body可以是一个布局组件,也可以是一个容器组 ...

  4. java jsp实现网络考试系统(mysql)

    java网络考试系统 功能:可进行学生.管理员登录,学生考试.管理员出卷.列表分页 @ 目录 java网络考试系统 实现效果 主要代码实现 写在最后 实现效果 主要代码实现 package cn.it ...

  5. 精讲响应式webclient第1篇-响应式非阻塞IO与基础用法

    笔者在之前已经写了一系列的关于RestTemplate的文章,如下: 精讲RestTemplate第1篇-在Spring或非Spring环境下如何使用 精讲RestTemplate第2篇-多种底层HT ...

  6. centos7上借助于xargs快速查询并卸载rpm软件

    在centos上卸载某些软件的时候,如果查询的软件包比较多,可以考虑使用xargs,边查询边卸载 如:下面在查询mysql包时候,将查询结果通过管道传送给xargs,然后使用rpm -e --node ...

  7. 结对项目 实现自动生成四则运算题目的程序 (C++)

    本次作业由 陈余 与 郭奕材 结对完成 零.github地址: https://github.com/King-Authur/-Automatically-generate-four-arithmet ...

  8. DevOps系列(2)-SonarQube之PostgreSQL

    上一篇从整体上讲了下DevOps大概涉及到了哪些内容,以及主要工作流程,接下来我们将分步详细介绍各个部分的使用. 概览 首先从 SonarQube 开始说起,SonarQube 是一个可用于检测重复代 ...

  9. 【译】Introducing “Web Live Preview”

    如果你开发的应用有 UI,你可能经历开发->编译->测试->修改->编译->测试的循环.根据所使用的框架或技术,有些可以改善这一流程,比如 edit-and-contin ...

  10. HTTP系列1番外之头部字段大全

    原文地址:https://www.jianshu.com/p/6e86903d74f7 常用标准请求头 字段 属性 举例 Accept 设置接受的内容类型 Accept: text/plain Acc ...