重学c#系列——什么是性能[外篇性能篇一]
前言
简单写一下性能的简介。
正文
什么是性能,很多时候有一个问题,那就很多人喜欢说。这个服务有很多访问,我们需要这样设计。
这是一个无法验证的指标,访问次数是多少? 响应时间是多少。
我把这归纳为自我臆想。
那么这个时候就有一些指标。
比如说这个接口,大概有500并发,响应时间需要在300ms内。
这是一些指标。因为这个时候已经大体知道了,并发量。
那么如果不知道的情况下呢,是不是也有一些指标呢?
是的,也有一些典型应用程序的性能目标示例:
| 系统类型 | 性能目标 | 环境约束 |
|---|---|---|
| 外部服务器 | 从请求到回复生成完毕不得超过300ms | 不超过300个并发活跃请求 |
| 外部web服务器 | 虚拟内存占用不得超过1.3GB | 不超过300个并发活跃请求且不超过500个在线会话 |
| 应用服务器 | cpu 使用率不得超过75% | 不超过1000个并发活跃api请求 |
| 应用服务器 | 硬页面失效不能超过每秒2次 | 不超过1000个并发获取请求api |
| 监控服务 | 从失败事件开始,到报警生成并发送出去,之间不得超过25ms | - |
| 监控服务 | 当没有报警生成的时候,磁盘io操作率应该是0 | - |
上面这些是一些经典的目标,但是不能忽视一点,那就是硬件环境。在什么样的硬件环境中测试上面标准才是有效的呢?
有了性能目标其实还有一个性能指标的东西,什么是性能指标呢?
性能指标不同于性能目标,它与具体场景和环境并不相关。
一项性能指标是一个用于体现应用程序行为的可测量的量化数值。
你可以在任意硬件及环境下测量一项性能指标,而不必关心此时有多少活跃用户、请求或会话。
在开发周期中,你可以以具体的性能目标总结出各项指标,并选择性的进行测量。
一般来说,客户端关注的是:启动时间、内存占用及cpu占用率。
对承担系统算法的服务器端应用程序来说,一般是cpu占用率、缓存实现、竞争内存分配和垃圾回收。
对web应用程序来说,一般会测量其内存使用量、数据库访问、网络,磁盘操作和响应时间。
- 在需求收集阶段,开始思考该设置怎样的性能目标
- 在架构设计开发阶段,提炼出各项重要的性能指标,并定义具体的性能目标。
- 在软件开发阶段,对原型代码或局部实现的功能进行比较繁琐的探索式性能测试,确保满足系统的性能目标。
- 在产品测试阶段,进行大量的负载均衡测试和性能测试,用于检测是否完全满足系统的性能目标。
开发维护阶段,按照所需,进行调整优化。
| 性能指标 | 测量单位 |
|---|---|
| CPU使用率 | 百分比 |
| 物理/虚拟内存占用 | 字节(B/KB/MB/GB) |
| 缓存失效 | 次,次/秒 |
| 页面失效 | 次,次/秒 |
| 数据库访问次数及耗时 | 次,次/秒,毫秒(ms) |
| 执行事件 | 毫秒(ms) |
| 网络操作 | 次,次/秒 |
| 磁盘操作 | 次,次/秒 |
| 响应时间 | 毫秒(ms) |
| 垃圾回收 | 次,次/秒,耗时(毫秒),占总时间百分比 |
| 抛出异常 | 次,次/秒 |
| 启动时间 | 毫秒(ms) |
| 竞争 | 次,次/秒 |
结
下一节cpu和内存的分析方法,和具体的工具。
重学c#系列——什么是性能[外篇性能篇一]的更多相关文章
- 重学c#系列——字典(十一)
前言 重学c#系列继续更新,简单看一下字典的源码. 看源码主要是解释一下江湖中的两个传言: 字典foreach 顺序是字典添加的顺序 字典删除元素后,字典顺序将会改变 正文 那么就从实例化开始看起,这 ...
- 重学c#系列——linq(2) [二十八]
前言 前文提及到了一些基础的linq的基础,那么这一节是一些补充. 正文 关于一个orderby的问题. 比如我们输入两个order by. 这里告诉我们多个order by是没有意义的,如果多个那么 ...
- 重学c#系列——对c#粗浅的认识(一)
前言 什么是c#呢? 首先你是如何读c#的呢?c sharp?或者c 井? 官方读法是:see sharp. 有没有发现开发多年,然后感觉名字不对. tip:为个人重新整理,如学习还是看官网,c# 文 ...
- 重学c#系列——动态类型[二十二]
前言 该系列准备继续完善,一共108篇,持续更新. 正文 为什么有动态类型呢? 是因为很多东西天生就是动态类型的. 比如xml 和 json.cvs.数据库表,这些本来就是数据类型的. 在反射系列中提 ...
- 重学Golang系列(一): 深入理解 interface和reflect
前言 interface(即接口),是Go语言中一个重要的概念和知识点,而功能强大的reflect正是基于interface.本文即是对Go语言中的interface和reflect基础概念和用法的一 ...
- 重学c#系列——c# 托管和非托管资源(三)
前言 c# 托管和非托管比较重要,因为这涉及到资源的释放. 现在只要在计算机上运行的,无论玩出什么花来,整个什么概念,逃不过输入数据修改数据输出数据(计算机本质),这里面有个数据的输入,那么我们的内存 ...
- 重学c#系列——异常续[异常注意事项](七)
前言 对上节异常的补充,也可以说是异常使用的注意事项. 正文 减少try catch的使用 前面提及到,如果一个方法没有实现该方法的效果,那么就应该抛出异常. 如果有约定那么可以按照约定,如果约定有歧 ...
- 重学c#系列——list(十二)
前言 简单介绍一下list. 正文 这里以list为介绍. private static readonly T[] s_emptyArray = new T[0]; public List() { t ...
- 重学c#系列——元组 [三十一]
前言 元组并不是c# 7.0的东西,早之前就有,叫做tuple.7.0加了valuetuple. 来看下元组吧,主要一些注意的地方. 正文 为什么在7.0 之前,元组用的不多呢? 因为tuple 在代 ...
- 重学数据结构系列之——平衡树之SB Tree(Size Blanced Tree)
学习来源:计蒜客 平衡树 1.定义 对于每一个结点.左右两个子树的高度差的绝对值不超过1,或者叫深度差不超过1 为什么会出现这样一种树呢? 假如我们依照1-n的顺序插入到二叉排序树中,那么二叉排序树就 ...
随机推荐
- VC-MFC(1) 随笔笔记+连接数据库
1 数据库语句: 2 CREATE DATABASE---创建新数据库 3 ALTER DATABASE-----修改数据库 4 CREATE TABLE ---- -创建新表 5 ALTER TAB ...
- C++ //类模板分文件编写问题及解决 //第一中解决方式 直接包含源文件 //第二种解决方法 将.h 和 cpp的内容写到一起,将后缀改为.hpp文件
1 //第一种方式被注释 2 //未被注释是第二种方式 3 //类模板分文件编写问题及解决 4 5 6 #include <iostream> 7 #include <string& ...
- python AI应用开发编程实战 大模型实战基础(数据存储类型列表与字典)(二)
大模型开发中,需要和自己的业务融合,我们要对自己的数据处理,熟悉外理excle word pdf 数据然后处理后可以放到向量数据库,或者直接Assistants API传到大模型引用,不管怎么样数 ...
- JS4-BOM浏览器对象类型
什么是BOM 浏览器的顶级对象 页面加载事件以及注意事项 定时器函数 JS执行机制 页面跳转.刷新 history.navigator对象 什么是BOM 浏览器对象模型(Browser Object ...
- ImageClipboard js粘贴剪切板图片,已测试,可用,可获得base64
ImageClipboard js粘贴剪切板图片,已测试,可用,可获得base64 具体用到自己项目的时候,拿源码改成自己的库,从写一遍 3个小问题 onpaste 执行了两遍,一次是图片加载完成,一 ...
- 数组动态表单验证,添加数组,逆序添加,表单验证会错位,发现是key的默认index问题,还有验证trigger问题,添加数据会爆红
数组动态表单验证,添加数组,逆序添加,表单验证会错位,发现是key的默认index问题,还有验证trigger问题,添加数据会爆红 解决方案: trigger: 'blur,change' 换 tri ...
- git clone error: RPC failed; curl 18 transfer closed with outstanding read data remaining
备忘 git clone比较大的工程时,出现这种错误:error: RPC failed; curl 18 transfer closed with outstanding read data rem ...
- Kotlin 快速遍历File及子目录筛选指定类型文件
原文: Kotlin 快速遍历File及子目录筛选指定类型文件 - Stars-One的杂货小窝 在做文件相关的app,经常会遇到筛选某个文件夹下的符合条件的文件对象,且要包含子文件夹,之前一直是自己 ...
- 曲线艺术编程第一章 coding curves
原作:Keith Peters 原文:https://www.bit-101.com/blog/2022/11/coding-curves/ 译者:池中物王二狗(sheldon) blog: http ...
- Ubuntu 14.04 升级到Gnome3.12z的折腾之旅(警示后来者)+推荐Extensions.-------(一)
PS:要转载请注明出处,本人版权所有. PS: 这个只是基于<我自己>的理解, 如果和你的原则及想法相冲突,请谅解,勿喷. 前置说明 本文发布于 2014-12-19 22:40:20 ...