首页 > 其他分享 >如何计算QPS、PV和需要部署机器数量?

如何计算QPS、PV和需要部署机器数量?

时间:2022-10-18 14:26:25浏览次数:76  
标签:PV 请求 部署 60 服务器 QPS 每秒

基本概念

网站访问量的常用衡量标准:独立访客(UV) 和 综合浏览量(PV),一般以日为单位来计算。

独立访客(UV):指一定时间范围内相同访客多次访问网站,只计算为1个独立访客。

综合浏览量(PV):指一定时间范围内页面浏览量或点击量,用户每次刷新即被计算一次。


并发用户数:即指同时执行操作的用户(线程数)

TPS :每秒处理的事务数(如果是数据库,就相当于写入、修改)

IOPS:即每秒磁盘进行的I/O操作次数。

QPS : 一台服务器(单进程)每秒能够相应的查询次数

QPS(每秒请求次数) = 总请求数 / ( 进程总数 * 请求时间 )

单台服务器每天PV计算

公式1:每天总PV = QPS * 3600 * 6 (6小时范围内)

公式2:每天总PV = QPS * 3600 * 8 (8小时范围内)

服务器数量计算

服务器数量 = ceil( 每天总PV / 单台服务器每天总PV )

ceil函数:返回大于或者等于指定表达式的最小整数

峰值QPS和机器计算公式

每台服务器每秒处理请求的数量 = ((80% * 总PV量)/(24小时60分60秒 * 40%)) / 服务器数量

原理: 每天80%的访问集中在40%的时间里,这40%时间叫做峰值时间。(很适合互联网的应用,白天请求多,晚上请求少)。

公式: 峰值时间每秒请求数(QPS) = ( 总PV数 * 80% ) / ( 每天秒数 * 40% )

机器: 需要的机器数量 = 峰值时间每秒QPS / 单台机器的QPS

我们经过压力测试得到结论:

((80%500万)/(24小时60分60秒40%))/1 = 115.7个请求/秒
((80%100万)/(24小时60分60秒40%))/1 = 23.1个请求/秒

  • 如果你的服务器一秒能处理115.7个请求,就可以承受500万PV/每天。
  • 如果你的服务器一秒能处理23.1个请求,就可以承受100万PV/每天。

以上请求数量是均匀的分布在白天的9.6个小时中,但实际情况并不会这么均匀的分布,会有高峰有低谷。
为了应对高峰时段,应该留一些余地,最少也要x2倍,x3倍也不为过。(留足余量,应对突然事件)

  • 如果你的服务器一秒能处理231.4--347.1个请求/秒,就可以应对平均500万PV/每天。
  • 如果你的服务器一秒能处理46.2--69.3个请求,就可以应对平均100万PV/每天。

(说明:这里每秒N个请求,就是QPS。因为我关心的是应用程序处理业务的能力。)

问:每天300w PV 的在单台机器上,这台机器需要多少QPS?
答:( 3000000 * 0.8 ) / (86400 * 0.4 ) = 69 (QPS)

问:如果一台机器的QPS是58,需要几台机器来支持?
答:69 / 58 = 2

PV计算带宽

计算带宽大小需要关注两个指标:峰值流量和页面的平均大小。

举个例子:
假设网站的平均日PV:10w 的访问量,页面平均大小0.4 M 。
网站带宽 = 10w / (24 60 * 60) 0.4M * 8 =3.7 Mbps

具体的计算公式: 网站带宽= PV / 统计时间(换算到S)* 平均页面大小(单位KB)* 8

在实际的网站运行过程中,我们的网站必须要在峰值流量时保持正常的访问,为了应对高峰时段,应该留一些余地,假设,峰值流量是平均流量的5倍,按照这个计算,实际需要的带宽大约在 3.7 Mbps * 5=18.5 Mbps

PS:
1、字节的单位是Byte,而带宽的单位是bit,1Byte=8bit,所以转换为带宽的时候,要乘以 8。
2、在实际运行中,由于缓存、CDN、白天夜里访问量不同等原因,这个是绝对情况下的算法。

标签:PV,请求,部署,60,服务器,QPS,每秒
From: https://www.cnblogs.com/zhaojinhui/p/16802391.html

相关文章

  • nginx安装-部署-配置
    Centos系统查看是否已安装nginxwhereisnginx打印下面内容说明没有安装安装nginxyuminstall-ynginx查看nginx版本nginx-v启动nginxnginx回车即启动nginx......
  • docker部署etcd集群单节点失败
    1、部署etcd3节点集群后其中一个节点报错2、查看etcd日志3、对比秘钥值是否正常4、看下memberlist5、备份etcd数据eesnapshotsave./snapshot2022-10-18.db6......
  • repmgr部署和测试
    https://www.modb.pro/db/22029  https://blog.csdn.net/qq_34479012/article/details/125706815?app_version=5.9.0&code=app_1562916241&csdn_share_tail=%7B%22typ......
  • IPV4网段划分
    原文链接:https://www.cnblogs.com/GHzcx/p/8979077.htmlIPV4的地址分类及网络号的范围如下:  A类地址(1)A类地址第1字节为网络地址,其它3个字节为主机地址。(2)A......
  • docker部署nacos配置mysql
    version:"3"services:mysql:restart:alwaysimage:mysql:latestcontainer_name:cloud_mysql......
  • GroupViT: Semantic Segmentation Emerges from Text Supervision论文阅读笔记
    摘要在端到端深度学习系统中,图像区域的分组通常是通过像素级识别标签的自上而下的监督而隐式发生。在本文中,作者将分组机制带回深度网络中,这使得语义分割可以在只有文本信......
  • Redis6.2集群部署
    复制集群概述&.集群特点(1)读写分离:Redis复制集群采用主写从读机制进行读写分离,易于性能扩展.(2)数据容灾:Redis复制集群仅支持一主多从,且从服务器也可以关联从服......
  • FPV
    介绍FPV是英文FirstPersonView的缩写,及第一人称视角,是一种基于遥控航模或者车辆模型上加装无限摄像头回传设备,通过远程来查看画面、操作模型的玩法。相关设备FPV系统的主......
  • 基于Gitlab+Gitlab-CI+Docker的持续集成部署(含.gitlab-ci.yml说明)
    ​安装gitlabhttps://www.gitlab.com.cn/yuminstallcurlpolicycoreutilsopenssh-serveropenssh-clientsyuminstallpostfixsystemctlenablepostfixsystemctlstart......
  • ceph集群部署与使用(块设备)(3mon+3osd+3mgr)+1ceph_deploy
    3台ceph节点操作:创建sudo用户,加入公钥,允许部署节点访问。disable/etc/selinux/configsetenforce0yuminstallyum-plugin-priorities-y时间同步:chronycmakestep部署节点......