应用程序的8个关键性能指标以及测量方法

前言

高性能一直是我们作为程序员..孜孜不倦的追求..

有的时候甚至会为了一句代码吵上几天..

那么到底应该如何评估我们的性能指标来判断是否需要优化呢?

今天就来讲一下这个..

说明一下,本篇是译文.

原文地址:https://stackify.com/application-performance-metrics/

下面我们就正式开始

 

 

正文

1.用户满意度/ Apdex分数

Apdex 全称是 Application Performance Index,是由 Apdex 联盟开放的用于评估应用性能的工业标准。Apdex 联盟起源于 2004 年,由 Peter Sevcik发起。Apdex 标准从用户的角度出发,将对应用响应时间的表现,转为用户对于应用性能的可量化为范围为 0-1 的满意度评价。

Apdex 定义了应用响应时间的最优门槛为 T,另外根据应用响应时间结合 T 定义了三种不同的性能表现:

  • Satisfied(满意):应用响应时间低于或等于 T(T 由性能评估人员根据预期性能要求确定),比如 T 为 1.5s,则一个耗时 1s 的响应结果则可以认为是 satisfied 的。

  • Tolerating(可容忍):应用响应时间大于 T,但同时小于或等于 4T。假设应用设定的 T 值为 1s,则 4 * 1 = 4 秒极为应用响应时间的容忍上限。

  • Frustrated(烦躁期):应用响应时间大于 4T。

公式如图:

 

其中 Satisfied Count 就是指定采样时间内响应时间满足 Satisfied 要求的应用响应次数;而 Tolerating Count 就是指定采样时间内响应时间满足 Tolerating 要求的应用响应次数;最后的 Total Samples 就是总的采样次数总数。从公式可以看出,应用的 Apdex 得分与采样持续时间无关,与目标响应时间 T 相关(在采用总数固定的情况下,T 通过影响 Satisfied Count以及 Tolerating Count的值间接影响最终的得分)。

 

 

假设你的应用期待的响应时间能够在 1000 ms 内,在 100 次采样中,有 50 次应用响应时间低于 1000 ms,30 次应用响应时间处于 1000 ms 到 4000 ms( 4 * 1000ms) 之间,剩下 20 次响应时间长于 4000 ms,那么,该应用在 T = 1000ms 的情况下的 Apdex 值为:

(50 + 30 / 2) / 100 = 0.65

  

2.平均响应时间

这个,就不做过多解释了 - - ,嗯..字面意思很明白.

 

3.错误率

监控错误率也是关键的应用程序性能指标~

我们一般有三种不同的方式来跟踪应用程序错误:

  • HTTP错误百分比 - 以错误结束的Web请求数量占的比例.

  • 已记录的异常 - 应用程序中未处理和记录的错误的数量

  • 抛出的异常-所有已被抛出的异常

在应用程序中,我们可能会抛出并忽略数千个异常。

然而这些隐藏的应用程序异常通常会导致很多性能问题。

4.应用实例计数

如果我们的应用程序在云中升级并使用了伸缩弹性扩张服务.

请务必知道运行的服务器/应用程序实例数量。

伸缩弹性扩张服务确实可以帮助我们确保应用程序的扩展以满足需求,并在非高峰时间节省很多成本.

但是,这也带来了一些独特的监控挑战。

举个栗子,如果我们的应用程序根据CPU使用率自动升级,我们可能看不到CPU变高。但是我们会看到服务器实例的数量变高。(更不用说我们的主机帐单..正在嗖嗖嗖...烧钱!)

 

5.Request请求率

了解我们的应用程序获得的流量会影响我们的应用程序的成功与否。

请求率的增加或减少或多或少都会影响到其他各项性能指标.

Request请求率可以于与其他应用程序性能指标相关联,以了解应用程序扩展的动态。

监控请求率也可以很好地观察峰值和一些不活动的API。如果你有一个请求量很大的API突然没有请求率,这应该是一件非常糟糕的事情,要注意。

当然你也可以根据这些数据来跟踪和发现自己的并发用户数量. 

 

6.应用程序和服务器CPU

如果我们的服务器上的CPU使用率非常高.

我们可以保证我们的应用程序性能出现了的问题。(这是句废话 - -,)

所以监控应用程序服务器CPU的使用情况是一个基本和关键的指标。

几乎所有的服务器和应用程序监视工具都可以跟踪我我们的CPU使用情况并提供监控警报。

因为每个服务器它们是很重要的.

 

7.应用可用性

监控和测量我们的应用程序是否在线并且可用也是我们应该跟踪的关键指标。

大多数公司使用它来衡量服务级别协议(SLA)的正常运行时间。

如果您有Web应用程序,则通过简单的定时HTTP检查小程序,来监视应用程序可用性是最简单的方法。

你可以每分钟为你运行这些类型的HTTP“ping”检查。

它可以是监视响应时间,状态代码,也可以是查找页面上的特定内容。 

8.垃圾回收

如果我们的应用程序是用.NET,C#或其他使用GC编程语言编写的

那么我们要提前会意识到可能会产生的性能问题。

垃圾回收发生时,可能导致我们的进程挂起并占用很多CPU。

垃圾回收指标虽然不是我们对关键性能指标的首选项。

但是这可能是一个隐藏的性能问题,始终是一个很好的主意,要注意。

对于.NET,您可以通过性能计数器“% GC Time”来监控这一点。Java通过JMX指标具有类似的功能。Retrace可以通过其应用程序指标功能监视这些内容 

 

结束语

前面说了这么多....那么作为我们.NET er 的新宠.. .NETCore我们如何监控他的8项性能指标呢?

监视效果如下:

 

我们下一篇就来讲..如何监控.Net Core应用程序..尽请期待..

相关文章: 

  • 互联网级监控系统必备-时序数据库之Influxdb技术

  • 互联网级监控系统必备-时序数据库之Influxdb集群及踩过的坑

原文地址:http://www.cnblogs.com/GuZhenYin/p/7161480.html


.NET社区新闻,深度好文,微信中搜索dotNET跨平台或扫描二维码关注

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/324640.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MyBatis Plus

文章目录第一节 MyBatis Plus 的简介第二节 MyBatis Plus 的框架搭建[1] 第一步:导包[2] 搭建SSM开发环境[3] 在数据库中创建测试表[4] 在pojo层下创建Student表的实体类[5] 在mapper层创建StudentMapper接口并继承BaseMapper接口[6] 创建测试类,并从Spr…

班级日常分享,一天一瞬间

119级日常分享经过两周左右的KTV项目终于要告一段落了,上午先让各个小组在班内试讲了下自己小组所做的KTV点歌系统,整体上做的还可以,有些小组还存在一些细节问题,在试讲的时候也都给他们指了指,相信下来会有所改进的。…

DDOS 攻击的防范教程

转载自 DDOS 攻击的防范教程 一个多月前,阮一峰的个人网站遭受 DDOS 攻击,下线了50多个小时。这篇文章就是他总结的,教大家如何应对这种攻击。 需要说明的是,我对 DDOS 并不精通,从没想过自己会成为攻击目标。攻击…

【2018.3.17】模拟赛之四-ssl1864jzoj1368 燃烧木棒【最短路,Floyd】

正题 链接 需要纪中OJ账号 有n条木棒,长度为1或根号2,给出每根木棒两头的坐标,和燃烧需要的时间。只能从一个木棒的一头开始点火,求燃烧完所有木棒所需要的最短时间。 输入输出(需要自取) Input 输入…

python变量的创建过程(内存地址变化)

​ name “Alex” 原因 python 解释器有自动垃圾回收机制,自动隔一段时间把没有跟变量名关联的内存数据回收。

推荐一份基于Docker的DevOps实战培训教程

01. 基于Docker的DevOps实战培训 微软工具链 基于Azure和Team Foundation Server 微软DevOps工具链是基于Visual Studio 应用生命周期管理(VSALM - Visual Studio Application Lifecycle Managemnet)的软件管理平台,本动手实验希望通过模拟一…

所有和Java中代理有关的知识点都在这了

转载自 所有和Java中代理有关的知识点都在这了 对于每一个Java开发来说,代理这个词或多或少都会听说过。你可能听到过的有代理模式、动态代理、反向代理等。那么,到底什么是代理,这么多代理又有什么区别呢。本文就来简要分析一下。 代理技…

神奇!一行代码实现删除某集合下标20-30的元素

大家好,我是雄雄。今天我们还是分享关于集合的内容。假如有这样的需求,已知集合的长度为100,也就是集合中有100个元素,现需要删除索引20-30之间的元素,我们应该怎么实现呢?我们先初始化集合,代码…

ssl初一组周六模拟赛【2018.3.17】

前言 先说一下成绩: 姓名成绩xjq(没错又是他)310hjq200hzb150wyc(本人)130lrz130xxy100lw30zyc缺考 正题 题目1:ssl2574 & jzoj1368 无限序列【斐波那契数列】 刚开始想用分治,结果做不出来,然后想到了更好的方法&#xff…

注意!在subList生成子列表之后,一定不要随便更改原列表

大家好,我是雄雄。前几期我们说过,subList方法是返回原列表的子列表,并且我们还说过,在subList返回的子列表上操作时,会直接影响着原列表,原文在这里:subList?? subString???子列表只是原列…

DotNetCore跨平台~Dockerfile的解释

大叔感觉网上对Dockerfile的说明不是很清楚,或者说怎么去用说的不清楚,在vs2017里我们可以去建立自己的Dockerfile文件,然后你的项目可以被生成一个镜像,把它推到仓库之后,你可以在linux,mac上去run你的项目了&#xf…

当你「ping 一下」的时候,你知道它背后的逻辑吗

转载自 当你「ping 一下」的时候,你知道它背后的逻辑吗 我们在遇到网络不通的情况,大家都知道去 ping 一下,看一下网络状况。 那你知道「ping」命令后背的逻辑是什么吗?知道它是如何实现的吗? 一、「ping」命令的作…

POJ1611-嫌犯【图论,并查集】

正题 题目链接: http://poj.org/problem?id1611 大意 有n个人,m个组,有一个流感嫌犯,流感嫌犯会将所在的组的所有人变成流感嫌犯,求流感嫌犯的数量。 解题思路 并查集将各个组合并,然后看看那些人是和…

python的三元运算

a 10 b 5if a > 15 :c a else:c bd a if a > 15 else bd 值1 if 条件A else 值2如果条件A成立,就取左边的 值1,则 取 值2

​凌云KTV点歌系统功能简介

19级青鸟三班 凌云小组指导老师:穆雄雄老师 班主任:王欣欣老师小组成员:组长:李磊 副组长:杨云浩组员:高启航 朱齐 李欣然 高松 张方仪 王浩如 苏荟旭 贾增伟制作周期:2020年9月25日-10月…

REST参考手册

总说接口定义要遵守 RESTful,那么什么是REST呢,今天跟小编一起来了解一下这个规范吧~! 原文作者简介: BRIAN SLETTEN是一个关注前沿技术的软件工程师,现居于加州奥本。他的职业生涯横跨了各个行业,包括零售…

漫画:如何用栈实现队列

转载自 漫画:如何用栈实现队列 栈的特点是先入后出,出入元素都是在同一端(栈顶): 入栈: 出栈: 队列的特点是先入先出,出入元素是在不同的两端(队头和队尾)…

POJ2524——宗教(Ubiquitous Religions)【图论,并查集】

正题 题目链接&#xff1a; http://poj.org/problem?id2524 大意 有n个学生&#xff0c;告诉你哪两个学生的宗教相等&#xff0c;求校园里有多少个宗教。 解题思路 并查集链接就好了 代码 #include<cstdio> using namespace std; int n,m,x,y,s,father[50001],t; i…

深入理解python的元组本身不可变性

元组本身不可修改&#xff0c; 如果包含可修改的数据类型&#xff0c; 那被包含的数据类型可以修改。

SQ小组KTV点歌系统简介

19级青鸟三班 SQ小组指导老师&#xff1a;穆雄雄老师 班主任&#xff1a;王欣欣老师小组成员:组长:王世泽 副组长:张坤鹏 组员:渠德春 徐龙翥 泮迎国 程至婷 樊永奇 杜坤凯 李含笑 吴俊衫1项目整体运行视频&#xff1a;KTV前端主页点歌系统主页进入主页面后左边第一个是演唱…