如何量化分布式系统高性能指标?

article/2025/6/19 12:39:21

目录

1、高性能指标

1.1 并发连接数

1.2 响应时间

1.3 吞吐量

1.4 响应时间&并发数&吞吐量之间的关系

2、JMeter压力测试

3、系统实时性能

4、性能优化基本原则

4.1 避免过早优化

4.2 进行系统性能测试

4.3 寻找系统瓶颈,分而治之,逐步优化

5、性能优化常用手段

5.1 浏览器/APP优化手段

5.1.1 减少网络请示数

5.1.2 使用压缩

5.1.3 使用客户端缓存

5.1.4 改变资源文件的加载顺序

5.1.5  减少Cookie的传输

5.1.6  用户交互友好提示

5.2  CDN 加速

5.3  反向代理缓存

5.4  WEB服务器端的优化手段

5.4.1 缓存

5.4.2 异步

5.4.3 集群

5.4.4 程序代码单元

5.4.5 并发编程

5.4.6 JVM优化

5.4.7 数据库优化

5.4.8 WEB容器优化


1、高性能指标

高性能指标

1.1 并发连接数

       并发连接数是指,在同一时刻,向服务器发出的请示个数,一般是指业务高峰期的一个峰值,它与在线用户数是有一定的关系,一般并发连接数是在线用户数的5%-15%,例如,
一个WEB应用有1000个用户在线,可以估算并发连接数在5%-15%之间,也就是50-150之间,这个并发连接数一般需要结合一些监控工具进行实时监控来获取准确的参考值。

1.2 响应时间

      下面表格列出一些常用操作的响应时间,以些来评估系统的响应时间:

操作响应时间
打开一个站点几秒
数据库查询一条记录(有索引)十几毫秒
机械磁盘一次寻址定位4 毫秒
从机械磁盘顺序读取 1M 数据2 毫秒
从 SSD 磁盘顺序读取 1M 数据0.3 毫秒
从远程分布式换成 Redis 读取一个
数据
0.5 毫秒
RPC调用20毫秒
从内存读取 1M 数据十几微妙
Java 程序本地方法调用几微妙
网络传输 2Kb 数据

1 微妙

1.3 吞吐量

     吞吐量是指单位时间内完成的业务请示数量,是一个量化指标。通过根据请示的类型又可以细分为:TPS(每秒事务请示数)、QPS(每秒查询请示数)。

1.4 响应时间&并发数&吞吐量之间的关系

      首先有一个客观约束条件,系统的负载是有极限的,当系统的并发数接近最大并发数时,此时,增加并发数,会引起响应时间快速增加、吞吐量急剧下降;而当系统的负载比较低或者并发数很小时,响应
时间是比较小的,此时随着并发数的增加,吞吐量是增加的。所以它们之间的关系,要参考当时系统负载是处于一个低水位还是高水位,我们也可以理解为物极必反。

2、JMeter压力测试

使用JMeter进行压测系统,将cpu利用率打到90%,观察系统各指标情况。

3、系统实时性能


磁盘IO、网络IO

响应时间

4、性能优化基本原则

4.1 避免过早优化

     不应该把大量的时间耗费在小的性能改进上,过早考虑优化是所有噩梦的根源。所以,我们应该编写清晰,直接,易读和易理解的代码,真正的优化应该留到以后,等到
性能分析表明优化措施有巨大的收益时再进行。但是过早优化,不表示我们应该编写已经知道的对性能不好的的代码结构。

4.2 进行系统性能测试

    所有的性能调优,都有应该建立在性能测试的基础上,直觉很重要,但是要用数据说话,可以推测,但是要通过测试求证。

4.3 寻找系统瓶颈,分而治之,逐步优化

        性能测试后,对整个请求经历的各个环节进行分析,排查出现性能瓶颈的地方,定位问题,分析影响性能的的主要因素是什么?
内存、磁盘 IO、网络、 CPU,还是代码问题?架构设计不足?或者确实是系统资源不足?
 

5、性能优化常用手段

5.1 浏览器/APP优化手段

5.1.1 减少网络请示数

    通过合并CSS文件、JS文件,来减少浏览器/APP向服务器发出的网络请示数,从而降低响应时间。

5.1.2 使用压缩

     当服务端响应内容比较大,通过超过1MB时,并且网络环境不好,带宽不高时,这个时候,可以考虑启用压缩,但是压缩也会引起另一个问题,对内容压缩是需要消耗一定的CPU时间的,在客户端那边进行内容的解压
也是需要消耗CPU时间的,是否启用压缩是需要进行一定的权衡的。

5.1.3 使用客户端缓存

     对于一些静态资源来说,内容不会发生变更,这个时候,可以考虑使用客户端缓存,通过HTTP头部字段:Cache-Control、Expires等相关属性进行控制,通过这种手段,避免每次请示静态资源都需要访问服务器减少
访问服务器的次数来优化响应时间。

5.1.4 改变资源文件的加载顺序

      一般前端的资源文件有CSS文件、JS文件,而JS文件中内容一般是用户与界面进行交互时才会使用到的,在页面进行加载时,JS文件中代码是不会执行的,所以我们改变JS文件加载顺序来加快页面的渲染,将CSS文件
最先加载,而JS文件放到最后加载。

5.1.5  减少Cookie的传输

      用户的上下文数据,我们一般不要存储到客户端的Cookie中,可以选择存储到LocalStorage中,因为Cookie中的数据,在同域中,每次请示都会携带传输,增加了HTTP请示的负载,特别是Cookie中内容比较大的时候,影响
就更为明显,而存储到LocalStorage中,客户端可以自定义按需发送用户数据,这样就避免每次都需要传输一些无用的数据。

5.1.6  用户交互友好提示

      在界面上有一些交互动作响应时间是比较长的,这个时候,界面不要一直等待服务器的响应,这个时候,可以在界面上显示一些模态框,数据正在处理中,用稍等,这样给用户一些比较友好的提示,而不是让用户觉得,
系统死机了,长时间不进行响应。

5.2  CDN 加速

      CDN,又称内容分发网络,本质仍然是一个缓存,而且是将数据缓存在用户最近的地方。无法自行实现 CDN 的时候,可以考虑商用 CDN 服务。

5.3  反向代理缓存

     将静态资源文件缓存在反向代理服务器上,一般是 Nginx。

5.4  WEB服务器端的优化手段

5.4.1 缓存

  网站性能优化第一定律:优先考虑使用缓存优化性能。缓存离用户越近越好
  缓存的基本原理和本质:缓存是将数据存在访问速度较高的介质中。可以减少数据访问的时间,同时避免重复计算。
  合理使用缓冲的准则: 
      1、频繁修改的数据,尽量不要缓存,读写比 2:1 以上才有缓存的价值。
      2、缓存一定是热点数据。
      3、应用需要容忍一定时间的数据不一致。
      4、缓存可用性问题,一般通过热备或者集群来解决。
      5、缓存预热,新启动的缓存系统没有任何数据,可以考虑将一些热点数据提前加载到缓存系统。
解决缓存击穿:
      1、布隆过滤器
      2、把不存在的数据也缓存起来 ,比如有请求总是访问 key = 23 的数据,但是这个 key = 23 的数据在系统中不存在,可以考虑在缓存中构建一个( key=23
value = null)的数据,一般设置一个5分钟的过期时间。

5.4.2 异步

      同步与异步本质的区别是发起调用的客户端后续的业务流程是否严格依赖调用的返回结果,如果强依赖,则使用同步,否则可以使用异步实现。
      同步:调用方需要主动等待结果的返回
      异步:不需要主动等待结果的返回,而是通过其他手段比如,状态通知,回调函数、客户端轮询等
      常用的异步实现有:异步Servlet、多线程、MQ。

5.4.3 集群

        可以将应用服务器构建为一个应用集群来以外提供服务,可以大大地优化分布式系统的响应时间、并发数、吞吐量。一般有一个计算公式,一台单机的吞吐是T,则
N台机器的吞吐量是N * T * 90%,一般集群是有一定比例的管理损耗的,实际不可能达到100%。

5.4.4 程序代码单元

      一个应用的性能归根结底取决于代码是如何编写的。选择合适的数据结构与算法;可以进行资源的复用,充分复用池化技术、单例模式,减少开销很大的系统资源的创建和销毁。

5.4.5 并发编程

          充分利用现在计算机系统多核CPU的特性,将任务进行逐步分解成可以独立运行的几个子任务,最后将子任务的执行结果进行合并,可以得到整个任务的执行结果,
则任务的执行时间只依赖于耗时最长的那个子任务的执行时间,这种并发编程的手法一般应用在一个任务可以分解成多个耗时的子任务,如果只有一个耗时比较长的子任务,
则性能优化不明显。此外,并发编程需要考虑多线程的并发资源资源竞争问题、线程通信问题。

5.4.6 JVM优化

     JVM调优理论&实践

5.4.7 数据库优化

       mysql数据库调优示例
       MySql索引大总结

5.4.8 WEB容器优化

        Tomcat9调优记录


http://chatgpt.dhexx.cn/article/gsyhL5Xa.shtml

相关文章

Kafka生产者发送流程详解

参考资料:《深入理解Kafka核心设计与实践原理》、《尚硅谷2022版Kafka3.x教程》 Kafka生产者发送流程详解 序列化器分区策略如何将一些相关连的数据放进同一张表里?自定义分区 生产者拦截器 Kafka生产者发送流程详解大致流程如下: 整个生产者…

使用 Lvs + Nginx 集群搭建高并发架构

高并发站点不仅要考虑网站后端服务的稳定,还需要考虑服务能否接入巨大流量、承受巨大流量,如上图: 1:流量接入,可以采用LvsNginx集群,这种方式能接入的QPS能高达数百万 2:通过Lvs实现Nginx集群,NginxTomca…

5G注册流程详解

1.1 注册流程 1.1.1 专享篇 UE发送Registration Request到(R)AN,消息中包含注册类型、用户标识、UE能力及请求的切片等参数。 (R)AN接收到消息,根据用户临时标识或切片选择合适的AMF,如果(R)AN找不到合适的AMF,则将Registration…

WebRTC建立会话流程分析

WebRTC建立会话流程总结 了解如何运行PeerConnection Demo后,熟悉运行流程可以做为深入学习WebRTC的切入点。本节重点解释客户端双方建立会话时交互的主要信令(控制会话的文本协议)和与信令相关的 WebRTC API。 准备工作 peerconnection_clie…

RPA-机器人流程自动化

RPA-机器人流程自动化 RPA-机器人流程自动化简介RPA是什么?RPA历史上的演变RPA原理RPA特点RPA技术框架及功能1.TagUI2.RPA for Python3.Robot Framework4.Automagica5.Taskt6.OpenRPA RPA部署模式1 环境配置的参数调整2 将自动化程序整体打包部署3 版本的管理和控制…

网络安全应急响应----7、数据泄漏应急响应

文章目录 一、数据泄露简介二、数据泄露途径1、外部泄露2、内部泄露 三、数据泄露应急响应方法1、发现数据泄露2、梳理基本情况3、确定排查范围和目标4、判断泄露途径4.1、主动泄露4.2、被动泄露 5、系统排查 四、数据泄露防御1、数据外部泄露防范2、数据内部泄露防范 一、数据…

发送邮件 显示对方服务器未响应,邮件对方服务器未响应

邮件对方服务器未响应 内容精选 换一换 MX优先级,用来指定邮件服务器接收邮件的先后顺序,数值越小优先级越高。当DNS服务器的解析记录中只有一条MX记录时,MX优先级没有意义。当DNS服务器的解析记录中存在多条MX记录时,邮件发送方的DNS服务器会优先把邮件投递到MX优先级高的…

网络安全应急响应----9、WebShell应急响应

文章目录 一、Webshell简介1、常见webshell2、Webshell检测 二、Webshell应急响应流程1、判断是否被植入webshell2、临时处置3、Webshell排查4、系统排查4.1、Windows系统排查4.2、Linux系统排查4.3、Web日志分析4.4、网络流量排查4.5、清除加固 三、Webshell防御方法 一、Webs…

复杂产品的响应式设计【流程篇】

都说2013年将是响应式设计爆发的一年。一淘设计团队在去年一淘首页改版时初步尝试了响应式,最近在一淘“玩客”项目中有了更加深入地应用,第一次在复杂产品中实现了全站响应式。中间积累了一些经验也踩了不少坑,于是就有了这个响应式设计三部…

史上最全测试流程详解----超详细

前言----- 对于测试流程基本很多做过测试的大牛,小哥哥,小姐姐都能说出个十之八九,但是对于细节,可能还需要一些整理文件,这不,我整理了一些测试的全部流程,希望能给大家带来帮助,有…

C语言 操作系统实验 四种调度(最高响应比优先算法 HRN)

注: 本文是四个调度算法的第一篇算法。 本文是根据CSDN上某一FCFS调度算法魔改来的,所以FCFS的算法不会发到网站。 我是个菜鸡,发文是为了纪念自己完成了代码,以及累计自己的经验。 如有知识错误或者算法有逻辑漏洞请各位大佬高…

处理动态图的图神经网络

汤吉良老师团队发表于2020年的SIGIR 《Streaming Graph Neural Networks》论文阅读笔记 背景: 图能够很好的表示实际数据(如社交网络,传输网络)。利用神经网络建模图结构数据,学习特征表示,改善图相关任务…

ImageView加载网络图片

使用第三方的库Glide加载网络图片 首先去下载一个glide的包 下载地址:https://github.com/bumptech/glide/releases/download/v4.7.0/glide-full-4.7.0.jar 我这里用的是glide-full-4.7.0 下载好之后直接复制到app\libs下面,然后点同步,可…

图神经网络的池化操作

图神经网络有两个层面的任务:一个是图层面(graph-level),一个是节点(node-level)层面,图层面任务就是对整个图进行分类或者回归(比如分子分类),节点层面就是对…

网络图的绘制方法详细讲解

网络拓扑图形如网络结构,并且由箭头线条、节点、路线三个因素组成。网络工程师在绘制网络图时,为了展示网络传输方式和途径,通常将网络节点设备和通信介质进行物理布局。网络拓扑图的结构类型有:星型、环型、树型、总线型、网状、分布式结构、等等。 网络图一般用处 在计算…

网络拓扑图怎么画 详细教程

大数据时代,如何更好地去运营、呈现数据,并从其中发掘出更多信息成为了人们探索的方向。网络拓扑图就是一种非常有用的信息化图表,这种网状关系呈现出来的利器可以使我们把想要传递的信息更加清晰、有逻辑的呈现在别人的眼前。 1. 什么是网络…

图神经网络及其应用

Graph Neural Networks and its applications 摘要 以图形形式构建的数据存在于生物化学、图像处理、推荐系统和社会网络分析等多个领域。利用预处理技术在图结构数据上训练机器学习模型有几种方法,但它们缺乏完全适应数据集和手头任务的灵活性。图神经网络允许创…

[概念]神经网络的种类(前馈神经网络,反馈神经网络,图网络)

随着神经网络的不断发展,越来越多的人工神经网络模型也被创造出来了,其中,具有代表性的就是前馈型神经网络模型、反馈型神经网络模型以及图网络. 1.前馈型神经网络模型 前馈神经网络(Feedforward Neural Network ,FNN&#xff09…

java实现下载网络图片到本地

文章目录 前言一、示例二、代码 1.代码示例2.运行结果总结 前言 当我们在网络上看到自己想要保存的照片,有的网站设置了权限,不能保存情况下,我们可以借助Java的文件流读取网络上的图片,并保存到本地。 一、示例 比如豆瓣话题第…