容量规划概述
admin
2024-05-09 13:47:51
0

容量规划是一个产品满足用户目标需求而决定生产能力的过程。

只有线性可水平扩展的集群才适合做容量规划(能通过获取一个节点的处理能力,计算出集群的处理能力)。

线上压测到单节点的某一指标达到临界值,从而计算出集群的最大处理能力,再根据线上历史监控获得当前集群实际运行负荷,通过计算即可求出理论服务器数。

若计算出集群当前的负荷快达到极限处理能力时,则可以通过垂直扩展(加CPU/内存/磁盘)和水平扩展(加服务器)两种方式来增加集群容量。

容量规划共分六

第一步,需要明确目标。

容量规划的目标是集群实际负荷小于等于集群理想负荷。

集群水位=集群负荷/集群能力 * 100%

集群能力=单机能力 * 实际服务器数

标准水位=标准负荷/标准集群能力 * 100%

标准集群能力=单机能力 * 理论服务器数

又因为集群负荷=标准负荷

所以集群水位 * 实际服务器数=标准水位 * 理论服务器数

理论服务器数=集群负荷 * 实际服务器数/(标准水位 * 集群能力)

注:单机能力是单台服务器压测阀值qps,是线上压测数据;

单机负荷是前一天单台服务器最大qps,是线上监控数据;

集群能力是单机能力 * 实际服务器数,是线上压测数据;

集群负荷是前一天集群最大qps,是线上监控数据;

单机水位是单机负荷/单机能力 * 100%;

集群水位是集群负荷/集群能力 * 100%。

当然满足目标的同时,集群的状态是受到约束的,资源是不可能无限供应,终会有一项资源会达到临界值。

约束条件有两类,一类是服务类,另一类是资源类。

服务类约束条件主要是响应时间小于等于200ms。

资源类约束条件主要是CPU利用率小于等于80%;内存占用小于等于1GB;磁盘IO使用率小于等于60%;带宽小于等于200Mbps。

第二步,需要了解集群特点。

不同的集群在选取容量指标和约束条件时是完全不同的,容量指标主要用于衡量集群的处理能力,而约束条件是压测停止的信号。

对于CPU密集型的集群,常常选择TPS(每秒处理请求数)作为集群的容量指标来衡量集群的处理能力,而约束条件则会重点关注CPU的使用率是否会率先达到瓶颈。

对于存储型的集群,选择流量(MB/S)作为容量指标,存储型的集群的TPS依赖于服务数据的大小,所以流量更适合来衡量集群的处理能力,而约束条件最先达到瓶颈的是网络流量或者IO。

若想要判断集群式的类型,则可以通过线下的性能测试结果来判断,线下的性能测试可以作为线上压测的参考依据。

第三步,需要选取合适的容量指标。

容量指标主要用于衡量服务器的处理能力。

容量指标的选取原则:

1)线上数据可采集;

2)能够客观反映服务器的处理能力。
作为容量指标,需要通过线上监控获取统计数据,其历史数据用于计算集群的实际负荷,而通过压测获得集群的最大处理能力。

第四步,需要明确约束条件。

约束条件主要是线上压测停止的信号,包括服务类指标和资源类指标。

只要有一项指标达到临界值,就会停止压测,并将当前容量指标的值作为集群的最大处理能力。

服务指标的选取原则:

1)服务需求——保证产品的服务质量;

2)资源使用瓶颈——保证系统的安全。

第五步,需要进行线上压测。

线上压测主要用于获取集群的最大处理能力。

线上压测的手段主要有三种,分别为模拟请求、线上引流和修改负载权重。

对于不同的集群系统架构特点和服务类型,选取不同的压测手段。

第一种压测手段:模拟请求。

模拟请求是模拟客户端的调用方式向压测服务器发起请求,简单易操作。
测试数据:

可以通过分析线上日志,根据线上服务配比建立压测模型,对于HTTP请求服务,可以通过提取线上日志数据URL直接用于压测请求数据。
实施步骤:
1)将线上一台节点offline,测试客户端直接连接被测服务器;
2)客户端梯度增加并发(50),不断增加并发直至超过设定的服务指标。
优缺点:

测试效果不受服务实际流量的限制,压测时间灵活,适用于GET请求不会产生脏数据。服务类指标可以通过测试客户端直接获取。
风险评估:

风险低,首先服务器offline不会影响到线上的正常请求;其次缓慢增加并发,不会造成服务崩溃的情况。

第二种压测手段:线上引流。

线上引流是将线上其它节点的请求复制到被测服务器上的操作,推荐使用Tcpcopy工具。
测试数据:线上请求直接复制引流,无需准备数据。
实施步骤:
1)将线上一台节点Offline,按照Tcpcopy部署的方法部署client和server,通常将Tcpcopy部署在nginx所在服务器,被压测服务器前需要增加一层nginx服务器;
2)将集群的其它节点流量复制到offline节点上,可以通过“tcpcopy –r参数”逐步增加复制系数,不断增加“-r参数”,直至超过设定的服务类指标;
3)若100%全部线上流量都不能压测到offline节点的瓶颈,则需要再次逐步放大引流系数。
优缺点:
请求真实,能够放大流量,测试效果不受服务实际流量的限制,压测时间灵活,但环境部署稍微麻烦,对于PUT请求需要做一些服务处理,避免产生脏数据。
风险评估:
风险低,首先服务器offline不会影响到线上的正常请求,缓慢增加流量复制,不会造成服务崩溃的情况。

第三种压测手段:修改负载权重。

对于一个集群,前面往往会有负载均衡服务器,通过修改nginx中upstream模块的负载均衡weight,可以不断增加集群某一节点的请求数,增加其访问压力。
测试数据:无需准备。
实施步骤:
1)缓慢增加nginx的负载均衡系数,使被测节点压力不断增加;

2)直至超过设定的服务类指标,停止增加压力。
优缺点:
完全真实的场景,压测数据准确,但是依赖自身的流量,压测时间不灵活,需要处于高峰期,对用户体验有一定影响。随着一台服务器的负载增加,响应时间会受到一定影响,这会直接反馈给在线用户。
风险评估:
风险低,虽然在高峰期进行压测,但是只需要修改nginx配置,再重启服务,这个对服务基本无影响。每次逐步增加weight不会出现服务器崩溃的情况。

第六步,需要进行线上监控。

线上监控不仅用于收集集群历史数据,监控计算集群的实际负荷,还用于在压测过程中,监控约束条件中的各种指标是否超限并停止压测。根据集群的特点和之前性能测试经验,关注容量指标和约束条件的服务和资源指标。集群历史数据是需要进行长期采集和整理的。

相关内容

热门资讯

linux入门---制作进度条 了解缓冲区 我们首先来看看下面的操作: 我们首先创建了一个文件并在这个文件里面添加了...
C++ 机房预约系统(六):学... 8、 学生模块 8.1 学生子菜单、登录和注销 实现步骤: 在Student.cpp的...
A.机器学习入门算法(三):基... 机器学习算法(三):K近邻(k-nearest neigh...
数字温湿度传感器DHT11模块... 模块实例https://blog.csdn.net/qq_38393591/article/deta...
有限元三角形单元的等效节点力 文章目录前言一、重新复习一下有限元三角形单元的理论1、三角形单元的形函数(Nÿ...
Redis 所有支持的数据结构... Redis 是一种开源的基于键值对存储的 NoSQL 数据库,支持多种数据结构。以下是...
win下pytorch安装—c... 安装目录一、cuda安装1.1、cuda版本选择1.2、下载安装二、cudnn安装三、pytorch...
MySQL基础-多表查询 文章目录MySQL基础-多表查询一、案例及引入1、基础概念2、笛卡尔积的理解二、多表查询的分类1、等...
keil调试专题篇 调试的前提是需要连接调试器比如STLINK。 然后点击菜单或者快捷图标均可进入调试模式。 如果前面...
MATLAB | 全网最详细网... 一篇超超超长,超超超全面网络图绘制教程,本篇基本能讲清楚所有绘制要点&#...
IHome主页 - 让你的浏览... 随着互联网的发展,人们越来越离不开浏览器了。每天上班、学习、娱乐,浏览器...
TCP 协议 一、TCP 协议概念 TCP即传输控制协议(Transmission Control ...
营业执照的经营范围有哪些 营业执照的经营范围有哪些 经营范围是指企业可以从事的生产经营与服务项目,是进行公司注册...
C++ 可变体(variant... 一、可变体(variant) 基础用法 Union的问题: 无法知道当前使用的类型是什...
血压计语音芯片,电子医疗设备声... 语音电子血压计是带有语音提示功能的电子血压计,测量前至测量结果全程语音播报࿰...
MySQL OCP888题解0... 文章目录1、原题1.1、英文原题1.2、答案2、题目解析2.1、题干解析2.2、选项解析3、知识点3...
【2023-Pytorch-检... (肆十二想说的一些话)Yolo这个系列我们已经更新了大概一年的时间,现在基本的流程也走走通了,包含数...
实战项目:保险行业用户分类 这里写目录标题1、项目介绍1.1 行业背景1.2 数据介绍2、代码实现导入数据探索数据处理列标签名异...
记录--我在前端干工地(thr... 这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 前段时间接触了Th...
43 openEuler搭建A... 文章目录43 openEuler搭建Apache服务器-配置文件说明和管理模块43.1 配置文件说明...