《大型网站技术架构设计》第二篇 架构-性能

news2024/11/24 18:42:58

不同视角下的网站性能

1、用户

从用户角度,网站性能就是用户在浏览器上直观感受到的网站响应速度快还是慢。用户感受到的时间

2、开发人员

开发人员关注的主要是应用程序本身及其相关子系统的性能,包括响应延迟、系统吞吐量、并发处理能力、系统稳定性等技术指标。

3、运维人员

运维人员更关注基础设施性能和资源利用率,如:

  1. 网络运营商(移动、联通、电信)的带宽能力;
  2. 服务器硬件的配置;
  3. 数据中心网络架构;
  4. 服务器和网络带宽的资源利用率等。

主要优化手段有建设优化骨干网、使用高性价比定制服务器、利用虚拟化技术优化资源利用等。

性能衡量标准

1.响应时间

指应用执行一个操作需要的时间,包括从发出请求开始到收到最后响应数据所需要的时间。响应时间是系统最重要的性能指标,直观地反映了系统的“快慢"

2.并发数量

指系统能够同时处理请求的数目,这个数字也反映了系统的负载特性。对于网站而言,并发数即网站并发用户数,指同时提交请求的用户数目。

在网站产品设计初期,产品经理和运营人员就需要规划不同发展阶段的网站系统用户数,并以此为基础,根据产品特性和运营手段,推算在线用户数和并发用户数。这些指标将成为系统非功能设计的重要依据。

3.吞吐量

(1)什么是吞吐量

单位时间内系统处理的请求数量,体现系统的整体处理能力。对于网站,可以用“请求数/秒”或是“页面数/秒”来衡量,也可以用“访问人数/天”或是 “处理的业务数小时”等来衡量。TPS(每秒事务数)是吞吐量的一个常用量化指标,此外还有 HPS(每秒 HTTP 请求数)、QPS(每秒查询数)等

(2)系统吞吐量、系统并发数、系统响应时间的关系

系统吞吐量和系统并发数,以及响应时间的关系可以形象地理解为高速公路的通行状况:

  1. 吞吐量是每天通过收费站的车辆数目(可以换算成收费站收取的高速费),
  2. 并发数是高速公路上的正在行驶的车辆数目,
  3. 响应时间是车速。

过程如下:

  1. 车辆很少时,车速很快,但是收到的高速费也相应较少;(并发请求少时,响应时间短,吞吐量低)
  2. 随着高速公路上车辆数目的增多,车速略受影响,但是收到的高速费增加很快;(并发稍多,吞吐量增加)
  3. 随着车辆的继续增加,车速变得越来越慢,高速公路越来越堵,收费不增反降;(并发较多,RT变长,吞吐量下降)
  4. 如果车流量继续增加,超过某个极限后,任何偶然因素都会导致高速全部瘫痪,车走不动,费当然也收不着,而高速公路成了停车场(资源耗尽)。

(3)网站性能优化的目的

网站性能优化的目的,除了改善用户体验的响应时间,还要尽量提高系统吞吐量最大限度利用服务器资源

4.性能计数器

(1)什么是性能计数器

它是描述服务器操作系统性能的一些数据指标。包括 System Load、对象与线程数、内存使用、CPU 使用、磁盘与网络 VO 等指标。这些指标也是系统监控的重要参数,对这些指标设置报警阈值,当监控系统发现性能计数器超过國值时,就向运维和开发人员报警,及时发现处理系统异常。

(2)什么是系统负载

System Load 即系统负载,指当前正在被 CPU 执行和等待被 CPU 执行的进程数目总和,是反映系统忙闲程度的重要指标。

  1. 多核 CPU 的情况下,完美情况是所有 CPU 都在使用,没有进程在等待处理,所以 Load 的理想值是 CPU 的数目。
  2. 当 Load 值低于 CPU 数目的时候,表示 CPU 有空闲,资源存在浪费;
  3. 当 Load 值高于 CPU 数目的时候,表示进程在排队等待 CPU 调度,表示系统资源不足,影响应用程序的执行性能。

在 Linux 系统中使用 top 命令查看,该值是三个浮点数,表示最近1分铀15分钟的运行队列平均进程数。如图4.2 所示。

性能优化手段

从用户请求的经过路线方向,考虑性能如何优化。

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

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

相关文章

Redis实战案例25-附近商铺功能

1. GEO数据结构 Redis中Geohash功能应用 添加地理坐标 求两点之间距离 搜索天安门附近10km的火车站,按升序 2. 导入店铺数据到GEO Redis中存储店铺的信息,将店铺的id和经纬度坐标存到GEO数据类型中去,其中member存id,经纬度对应…

关于自动化测试用例失败重试的一些思考

自动化测试用例失败重跑有助于提高自动化用例的稳定性,那我们来看一下,python和java生态里都有哪些具体做法? 怎么做 如果是在python生态里,用pytest做测试驱动,那么可以通过pytest的插件pytest-rerunfailures来实现…

第十三次CCF计算机软件能力认证

第一题:跳一跳 近来,跳一跳这款小游戏风靡全国,受到不少玩家的喜爱。 简化后的跳一跳规则如下:玩家每次从当前方块跳到下一个方块,如果没有跳到下一个方块上则游戏结束。 如果跳到了方块上,但没有跳到方块的…

Python(七十一)集合的概述与创建

❤️ 专栏简介:本专栏记录了我个人从零开始学习Python编程的过程。在这个专栏中,我将分享我在学习Python的过程中的学习笔记、学习路线以及各个知识点。 ☀️ 专栏适用人群 :本专栏适用于希望学习Python编程的初学者和有一定编程基础的人。无…

自然语言处理:长文本场景下的关键词抽取实践

NLP专栏简介:数据增强、智能标注、意图识别算法|多分类算法、文本信息抽取、多模态信息抽取、可解释性分析、性能调优、模型压缩算法等 专栏详细介绍:NLP专栏简介:数据增强、智能标注、意图识别算法|多分类算法、文本信息抽取、多模态信息抽取、可解释性分析、性能调优、模型…

第四章 kernel函数基础篇

cuda教程目录 第一章 指针篇 第二章 CUDA原理篇 第三章 CUDA编译器环境配置篇 第四章 kernel函数基础篇 第五章 kernel索引(index)篇 第六章 kenel矩阵计算实战篇 第七章 kenel实战强化篇 第八章 CUDA内存应用与性能优化篇 第九章 CUDA原子(atomic)实战篇 第十章 CUDA流(strea…

【Python ezdxf+matplotlib】显示AutoCAD导出的.dxf格式文件

代码: import ezdxf,matplotlib import matplotlib.pyplot as plt from matplotlib.patches import Polygon matplotlib.use(TkAgg) # 避免Matplotlib版本与其他相关库的兼容性问题def display_dxf(file_path):doc ezdxf.readfile(file_path)msp doc.modelspac…

Maven命令启动SpringBoot项目

用Maven命令启动SpringBoot项目,记录如下: mvn spring-boot:run C:\Users\Administrator\source\repos\kd-datacenter\server\kd-datacenter>mvn spring-boot:run

HBase-组成

client 读写请求HMaster 管理元数据监控region是否需要进行负载均衡,故障转移和region的拆分RegionServer 负责数据cell的处理,例如写入数据put,查询数据get等 拆分合并Region的实际执行者,由Master监控,由regionServ…

Idea中maven无法下载源码

今天在解决问题的时候想要下载源码,突然发现idea无法下载,这是真的蛋疼,没办法查看原因,最后发现问题的原因居然是因为Maven,由于我使用的idea的内置的Bundle3的Maven,之前没有研究过本地安装和内置的区别&…

MyBatis-动态SQL-foreach

目录 标签有以下常用属性&#xff1a; 小结 <froeach> <foreach>标签有以下常用属性&#xff1a; collection&#xff1a;指定要迭代的集合或数组的参数名&#xff08;遍历的对象&#xff09;。item&#xff1a;指定在迭代过程中的每个元素的别名&#xff08;遍历…

D. Productive Meeting

Example input 8 2 2 3 3 1 2 3 4 1 2 3 4 3 0 0 2 2 6 2 3 0 0 2 5 8 2 0 1 1 5 0 1 0 0 6 output 2 1 2 1 2 3 1 3 2 3 2 3 5 1 3 2 4 2 4 3 4 3 4 0 2 1 2 1 2 0 4 1 2 1 5 1 4 1 2 1 5 2 解析&#xff1a; 贪心&#xff0c;每次选择两个剩余次数最多的人&#xff0c;并…

使用hutool工具生成树形结构

假设要构建一个菜单&#xff0c;可以实现智慧库房&#xff0c;菜单的样子如下&#xff1a; 智慧库房|- RFID|- 智慧大屏|- 智能密集架|- 环境管控那这种结构如何保存在数据库中呢&#xff1f;一般是这样的&#xff1a; ​ 每条数据根据parentId相互关联并表示层级关系&#x…

【应用层】- HTTP协议

目录 HTTP简介 认识URL 协议方案名 登录信息&#xff08;认证&#xff09; 服务器地址 服务器端口号 带层次的文件路径 查询字符串 片段标识符 urlencode和urldecode urlencode编码工具 HTTP协议格式 HTTP请求协议格式 如何将有效载荷跟HTTP报头进行分离&#xff…

应急响应-linux挖矿病毒的实战处置

0x01 服务器现状分析 客户描述服务器卡顿&#xff0c;切通过搜索引擎进去该官网跳转非法页面&#xff0c;但本地访问无异常 0x02 信息收集 通过进程占用情况cpu功率拉满&#xff0c;确定被植入挖矿病毒文件 qq 且存在计划任务update.sh&#xff1a;crontab -l 将该文件上传沙…

RabbitMQ消息队列

目录 网址&#xff1a; 一、项目准备 1.导入依赖 2.抽取工具类 配置的属性在哪里呢 二、代码编写 1.简单模式 生产者 消费者 2.Work queues工作队列模式 生产者 消费者1 消费者2 3.Publish/Subscribe发布与订阅模式 生产者 消费者1 消费者2 4.Routing路由模式…

伦敦金费用有哪几方面?

通常在网上开设伦敦金投资账户是没有成本的&#xff0c;而它交易的费用&#xff0c;主要是由点差和过夜利息&#xff08;仓息&#xff09;构成。如果伦敦金投资者只是做短线的日内交易&#xff0c;做一手完整的100盎司的标准合约&#xff0c;需要支付大约50美元点差费用&#x…

备忘录模式(C++)

定义 在不破坏封装性的前提下&#xff0c;捕获一-个对象的内部状态&#xff0c;并在该对象之外保存这个状态。这样以后就可以将该对象恢复到原先保存的状态。 应用场景 ➢在软件构建过程中&#xff0c;某些对象的状态在转换过程中&#xff0c;可能由于某种需要&#xff0c;要…

【vim 学习系列文章 4 - vim与系统剪切板之间的交互】

文章目录 背景1.1.1 vim支持clipboard 检查1.1.2 vim的寄存器 上篇文章&#xff1a;【vim 学习系列文章 3 - vim 选中、删除、复制、修改引号或括号内的内容】 背景 从vim中拷贝些文字去其它地方粘贴&#xff0c;都需要用鼠标选中vim的文字后&#xff0c;Ctrlc、Ctrlv&#x…

回归决策树模拟sin函数

# -*-coding:utf-8-*- import numpy as np from sklearn import tree import matplotlib.pyplot as pltplt.switch_backend("TkAgg") # 创建了一个随机数生成器对象 rng rngnp.random.RandomState(1) print("rng",rng) #5*rng.rand(80,1)生成一个80行、1列…