500万PV的网站需要多少台服务器?
1. 衡量业务量的指标
衡量业务量的指标项有很多,比如,常见Web类应用中的PV、UV、IP。而比较贴近业务的指标项就是大家通常所说的业务用户数。但这个用户数比较笼统,其实和真实访问量有比较大的差距,所以为了更贴近实际业务量及压力,我们又把用户数的指标分成了活跃用户数、在线用户数以及并发用户数。常见衡量业务量级的指标汇总如表所示。
指标 | 计算周期 | 所表示的业务指标含义 |
---|---|---|
PV | 按天 | PV是Page View的简写。一般指Browser/Server(浏览器/服务器)架构中的Web类业务一天内页面的访问次数,每打开或刷新一次页面,就算作一个PV |
UV | 按天 | UV是Unique Visitor的简写。一般指Browser/Server(浏览器/服务器)架构中的Web类业务一天内访问站点的用户数(以Cookie为依赖) |
IP | 按天 | IP是指Browser/Server(浏览器/服务器)架构中的Web类业务一天内有多少个独立的IP浏览了页面,即统计不同的IP浏览用户数 |
用户数 | 软件周期 | 一般指业务系统的注册用户数 |
活跃用户数 | 按天 | 指注册用户数中,一天中实际使用了业务系统的用户数量,跟UV的概念一样 |
在线用户数 | 按天 | 指一天的活跃用户数中,用户同时在一定的时间段内在线的数量 |
并发用户数 | 按秒 | 指在线用户数的基础上,某一时刻同时向服务器发送请求的用户数 |
2. 业务访问量与性能压力指标的转换
得到业务访问量的指标数据后,我们要将其转化成为系统压力的指标数据。这一步让抽象的业务访问量的指标数据,变成技术人员熟悉的性能压力指标数据,这样在做架构规划设计、容量规划和成本预算时才能有章可循,从而使其思路更加清晰。
2.1 未上线业务量与性能压力指标的转换
针对业务还处于前期需求规划期间的容量规划,最常见的做法就是把业务量的数据指标,最终转换成对系统的每秒请求数,进而评估对应业务量究竟产生了多少性能压力,最终设计出合理的架构,以及要用多大规模的服务器及配置。
2.2 已上线业务量与性能压力指标的转换
如果业务系统已经上线,生成指标转换的模型就要简单的多。一方面,当前业务系统有多少用户量及活跃用户量等业务数据,运营人员基本都能很直接的给出。另一方面,业务系统的运行性能状态也能通过监控很直接地体现出来。有了这两组数据,我们就能将用户量与性能压力进行转化对应,也能做出未来业务量下的容量规划等。比如,100万用户量,当前用了10台机器,业务高峰期资源使用率是50%。如果变成200万用户量,至少要在加10台服务器。在实际应用中,用户量和对系统压力不是呈线性级关系,而是指数级关系。
3. 服务器配置模型
机器:峰值时间每秒QPS / 单台机器的QPS = 需要的机器
单台机器支持多少QPS? 这和很多因素有关,以Tomcat为例,单机 Tomcat 的支持的 QPS(每秒查询率)取决于多个因素,包括但不限于以下几点:
-
硬件配置:服务器的 CPU、内存、硬盘速度等硬件资源对性能有很大影响。更高配置的硬件通常能够支持更高的 QPS。
-
应用程序复杂性:应用程序的复杂性、处理逻辑和业务需求会影响 QPS。一些复杂的业务逻辑和大量的计算可能会降低系统的吞吐量。
-
并发连接数:同时连接到 Tomcat 的请求数量也是限制 QPS 的因素。在高并发场景下,如果并发连接数过高,可能会降低系统的响应速度。
-
网络带宽:处理请求的 Tomcat 服务器与客户端之间的网络带宽也会对 QPS 产生影响。更高的带宽可以支持更多的请求同时传输。
Tomcat 里面有一个线程池。其 maxThreads 默认值是 200(假定 BIO 模式):
假设服务器处理请求RT为1秒,理想状态下单机Tomcat QPS=200
4. 案例分析
4.1 500w PV 需要多少台机器
500w PV,即一天24小时中访问了业务页面500w次,根据2/8法则,80%的业务发生在20%的时间段。计算公式如下
QPS = (80% * 总PV)/ (24小时 * 3600秒 * 20%)
500w PV QPS = (80% * 500w)/ (24 * 3600 * 20%) = 231.48 个请求/秒
所以理想状态下至少得 2台4核8G服务器部署Tomcat能支持
4.2 1000w 用户 需要多少台机器
1000w 用户 按照2/8法则,有20%活跃用户,假设平均每个用户过来点击10次
PV = 1000w * 20% * 10 = 2000w PV
QPS = (80% * 2000w)/ (24 * 3600 * 20%) = 925.92 个请求/秒
所以理想状态下至少得 5台4核8G服务器部署Tomcat能支持
相关文章:

500万PV的网站需要多少台服务器?
1. 衡量业务量的指标 衡量业务量的指标项有很多,比如,常见Web类应用中的PV、UV、IP。而比较贴近业务的指标项就是大家通常所说的业务用户数。但这个用户数比较笼统,其实和真实访问量有比较大的差距,所以为了更贴近实际业务量及压力…...
拖动排序功能的实现 - 使用HTML、CSS和JavaScript
引言 在现代Web应用程序中,拖动排序是一种常见的用户界面交互方式,它允许用户通过拖动元素来重新排列列表或项目的顺序。本文将介绍如何使用HTML、CSS和JavaScript来实现手动拖动排序功能。 一、HTML结构 首先,我们需要定义一个列表&#…...

【STM32MP135 - ST官方源码移植】第三章:OPTEE源码移植教程
STM32MP135 OPTEE源码移植教程 一、解压optee的源码压缩包二、拷贝新的设备树文件三、修改Makefile.sdk文件(1)增加stm32mp135d-atk设备树编译(2)修改编译器为arm-none-linux-gnueabihf(3)使用buildroot工具…...

云主机安全-私有密钥安全认证
场景描述 云主机凭借其性价比高、生配扩容便利、运维便捷、稳定性高等优势深受用户青睐,越来越多的企业开始租用云主机,将自己的服务器、业务系统等搭建或存储到云主机上。 用户痛点 用户租用或托管的云主机,运维端口(远程桌面&…...
《Web安全基础》02. 信息收集
web 1:CDN 绕过1.1:判断是否有 CDN 服务1.2:常见绕过方法1.3:相关资源 2:网站架构3:WAF4:APP 及其他资产5:资产监控 本系列侧重方法论,各工具只是实现目标的载体。 命令与…...
ffmpeg根据原始视频的帧率进行提取视频帧
直接上代码,自己编写的。。。有问题可以提 安装教程看这个:https://blog.csdn.net/m0_61497715/article/details/129817641 去官网下个最新的ffmpeg,解压到随便的目录,上级目录最好不要用中文; 然后去设置环境变量&am…...

从零搭建秒杀服务
1. 前言 目的:该项目只用于技术交流,不用于过多商业用途。 适用:可用于简历亮点、毕业答辩等。 2. 项目成果 2.1 秒杀主页 包含5个功能点: ①、Product Name:秒杀商品名称 ②、Product Image:秒杀商…...

数据库应用:CentOS 7离线安装PostgreSQL
目录 一、理论 1.PostgreSQL 2.PostgreSQL离线安装 3.PostgreSQL初始化 4.PostgreSQL登录操作 二、实验 1.CentOS 7离线安装PostgreSQL 2.登录PostgreSQL 3.Navicat连接PostgreSQL 三、总结 一、理论 1.PostgreSQL (1)简介 PostgreSQL 是一个…...
【PHP面试题42】Laravel依赖注入实现的原理是怎么样的
文章目录 一、前言二、什么是依赖注入三、Laravel依赖注入的实现原理3.1 Laravel依赖注入的实现原理:3.2 Laravel依赖注入的代码示例 四、总结 一、前言 本文已收录于PHP全栈系列专栏:PHP面试专区。 计划将全覆盖PHP开发领域所有的面试题,对标…...

如何在本地组策略编辑器中启用或禁用剪贴板历史记录
复制粘贴是我们大家都会做的事情,可能一天要做多次。但是,如果你需要一次又一次地复制同样的几件事,你该怎么办?如何在设备上复制内容? 从Windows 10版本17666开始,微软正在解决这一问题,并将剪贴板提升到一个新的水平,只需按下Win+V,你将获得全新的剪贴板体验。 你…...

如何与ChatGPT愉快地聊天
原文链接:https://mp.weixin.qq.com/s/ui-O4CnT_W51_zqW4krtcQ 人工智能的发展已经走到了一个新的阶段,在这个阶段,人工智能可以像人一样与我们进行深度的文本交互。其中,OpenAI的ChatGPT是一个具有代表性的模型。然而࿰…...

使用Gradio库进行交互式数据可视化:Timeseries模块介绍
❤️觉得内容不错的话,欢迎点赞收藏加关注😊😊😊,后续会继续输入更多优质内容❤️ 👉有问题欢迎大家加关注私戳或者评论(包括但不限于NLP算法相关,linux学习相关,读研读博…...

CONTAINER = ALL是ALTER USER语句的默认值
连接到root时查看有关root,CDB和PDB的数据 当公用用户执行查询时,可以限制X $表和V $,GV $和CDB_ *视图的视图信息。X$表和这些视图包含有关应用程序root及其关联应用程序PDB的信息,或者如果连接到CDB root,则是整个C…...

华为发布大模型时代AI存储新品
7月14日,华为发布大模型时代AI存储新品,为基础模型训练、行业模型训练,细分场景模型训练推理提供存储最优解,释放AI新动能。 企业在开发及实施大模型应用过程中,面临四大挑战: 首先,数据准备时…...
5G网络功能介绍
5G系统架构由以下网络功能(NF)组成 -身份验证服务器功能(AUSF)。 -接入和移动性管理功能(AMF)。 -数据网络(DN),例如运营商服务、互联网接入或第三方服务。 -非结构化数据存储功能(UDSF)。 -网络曝光功能(NEF)。 -网络存储库功能(NRF)。 -网络切片特定身…...
笙默考试管理系统-MyTestMean(13)
笙默考试管理系统-MyTestMean(13) 目录 一、 笙默考试管理系统-MyTestMean 二、 笙默考试管理系统-MyTestMean 三、 笙默考试管理系统-MyTestMean 四、 笙默考试管理系统-MyTestMean 五、 笙默考试管理系统-MyTestMean 笙默考试管理系统-MyTes…...

Tomcat之高可用配置
Nginx搭配Tomcat实现负载均衡 传统模型下,一个项目部署在一台tomcat上,这个时候,假如tomcat因为服务器资源不够,突然挂机了,那么整个项目就无法使用。 Nginx就可以避免单台服务如果挂机,依然能保证服务正…...

IDEA中springboot的热加载thymeleaf静态html页面
1.首先加入开发工具依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId><optional>true</optional> </dependency> 2.其次在build maven插件中开启热部署 <bu…...

Java中可以使用哪些系统架构?怎样选择?
架构,又名软件架构,是有关软件整体结构与组件的抽象描述,用于指导大型软件系统各个方面的设计。 Java企业级的应用根据业务的复杂程度,通常使用的系统架构有应用架构、垂直应用架构、面向服务的架构(Service-Oriented Architectu…...

一文详解什么是数据库分片
概要 应用程序正在变得越来越好,它拥有更多的功能、更多的活跃用户,并且每天都会收集更多的数据。但数据库现在导致应用程序的其余部分变慢。数据库分片可能是问题的答案,但许多人不知道它是什么,最重要的是何时使用它。在本文中我…...

【Axure高保真原型】引导弹窗
今天和大家中分享引导弹窗的原型模板,载入页面后,会显示引导弹窗,适用于引导用户使用页面,点击完成后,会显示下一个引导弹窗,直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…...
利用ngx_stream_return_module构建简易 TCP/UDP 响应网关
一、模块概述 ngx_stream_return_module 提供了一个极简的指令: return <value>;在收到客户端连接后,立即将 <value> 写回并关闭连接。<value> 支持内嵌文本和内置变量(如 $time_iso8601、$remote_addr 等)&a…...

基于Docker Compose部署Java微服务项目
一. 创建根项目 根项目(父项目)主要用于依赖管理 一些需要注意的点: 打包方式需要为 pom<modules>里需要注册子模块不要引入maven的打包插件,否则打包时会出问题 <?xml version"1.0" encoding"UTF-8…...
linux 下常用变更-8
1、删除普通用户 查询用户初始UID和GIDls -l /home/ ###家目录中查看UID cat /etc/group ###此文件查看GID删除用户1.编辑文件 /etc/passwd 找到对应的行,YW343:x:0:0::/home/YW343:/bin/bash 2.将标红的位置修改为用户对应初始UID和GID: YW3…...

Linux-07 ubuntu 的 chrome 启动不了
文章目录 问题原因解决步骤一、卸载旧版chrome二、重新安装chorme三、启动不了,报错如下四、启动不了,解决如下 总结 问题原因 在应用中可以看到chrome,但是打不开(说明:原来的ubuntu系统出问题了,这个是备用的硬盘&a…...
Java + Spring Boot + Mybatis 实现批量插入
在 Java 中使用 Spring Boot 和 MyBatis 实现批量插入可以通过以下步骤完成。这里提供两种常用方法:使用 MyBatis 的 <foreach> 标签和批处理模式(ExecutorType.BATCH)。 方法一:使用 XML 的 <foreach> 标签ÿ…...

day36-多路IO复用
一、基本概念 (服务器多客户端模型) 定义:单线程或单进程同时监测若干个文件描述符是否可以执行IO操作的能力 作用:应用程序通常需要处理来自多条事件流中的事件,比如我现在用的电脑,需要同时处理键盘鼠标…...

【Linux手册】探秘系统世界:从用户交互到硬件底层的全链路工作之旅
目录 前言 操作系统与驱动程序 是什么,为什么 怎么做 system call 用户操作接口 总结 前言 日常生活中,我们在使用电子设备时,我们所输入执行的每一条指令最终大多都会作用到硬件上,比如下载一款软件最终会下载到硬盘上&am…...

何谓AI编程【02】AI编程官网以优雅草星云智控为例建设实践-完善顶部-建立各项子页-调整排版-优雅草卓伊凡
何谓AI编程【02】AI编程官网以优雅草星云智控为例建设实践-完善顶部-建立各项子页-调整排版-优雅草卓伊凡 背景 我们以建设星云智控官网来做AI编程实践,很多人以为AI已经强大到不需要程序员了,其实不是,AI更加需要程序员,普通人…...
写一个shell脚本,把局域网内,把能ping通的IP和不能ping通的IP分类,并保存到两个文本文件里
写一个shell脚本,把局域网内,把能ping通的IP和不能ping通的IP分类,并保存到两个文本文件里 脚本1 #!/bin/bash #定义变量 ip10.1.1 #循环去ping主机的IP for ((i1;i<10;i)) doping -c1 $ip.$i &>/dev/null[ $? -eq 0 ] &&am…...