当前位置: 首页 > news >正文

软件开发中的常用性能指标

大家好!我是今越。在软件开发中我们经常会遇到一些性能指标,下面就带大家一起来看看。

QPS

Queries Per Second,每秒查询率,一台服务器每秒能够响应的查询次数。它是对一个特定的查询服务器在规定时间内所处理流量多少的衡量标准, 即每秒的响应请求数,也即是最大吞吐能力。

在互联网中,作为域名系统服务器的机器的性能经常用每秒查询率来衡量。

如何估算自己项目的 QPS?

使用日志估算即可,比如在中间件里记录访问日志,最终统计 1s 内有多少个访问,QPS 就是多大。一个接口的 QPS 跟业务流程有关,跟是否使用缓存有关。

不使用缓存:大约 8 核 16g 机器,QPS 400 多,如果横向扩展,10 台 8 核 16g 的机器,QPS 大约 4000 多;

使用缓存:大约 8 核 16g 机器,QPS 破千没问题;

TPS

Transactions Per Second,每秒处理的事务数,包括一条消息入和一条消息出,加上一次用户数据库访问。

一个事务是指一个客户端向服务器发送请求然后服务器做出反应的过程。客户端在发送请求时开始计时,收到服务器响应后结束计时,以此来计算使用的时间和完成的事务个数。

TPS 的过程包括:客户端请求服务端、服务端内部处理、服务端返回客户端。

QPS VS TPS

QPS 基本类似于 TPS,但是不同的是,对于一个页面的一次访问,形成一个 TPS;但一次页面请求,可能产生多次对服务器的请求,服务器对这些请求,就可计入 QPS。

例如,访问一个 index 页面会请求服务器 3 次,包括一次 html,一次 css,一次 js,那么访问这一个页面就会产生一个 T,产生三个 Q。

RT

Response Time,响应时间,指执行一个请求从开始到最后收到响应数据所花费的总体时间,即从客户端发起请求到收到服务器响应结果的时间。它是一个系统最重要的指标之一,它的数值大小直接反应了系统的快慢。

并发数

并发数,指系统同时处理的请求或事务数,可以直接理解为:系统同时处理的请求数量。它反应了系统的负载能力。

吞吐量

吞吐量是指系统在单位时间内处理请求的数量,TPS、QPS 都是吞吐量的常用量化指标。

系统吞吐量要素

一个系统的吞吐量(承压能力)与 request(请求)对 CPU 的消耗,外部接口,IO 等等紧密关联。单个 request 对 CPU 消耗越高,外部系统接口,IO 影响速度越慢,系统吞吐能力越低,反之越高。

系统吞吐量几个重要参数:QPS / TPS、并发数、响应时间。

QPS / TPS:每秒请求/事务数
并发数:系统同时处理的请求/事务数
响应时间:一般取平均响应时间

三者的关系

QPS = 并发数 / 平均响应时间
并发数 = QPS * 平均响应时间

1)例如,系统 QPS 为 1w,每个请求的响应时间都是 2s,那么并发数就是 2w。

2)例如,按二八定律来看,如果每天 80% 的访问集中在 20% 的时间里,这 20% 时间就叫做峰值时间。

公式:( 总 PV 数 * 80% ) / ( 每天秒数 * 20% ) = 峰值时间 QPS
机器:峰值时间 QPS / 单台机器的 QPS = 需要的机器数

每天 300w PV 在单台机器上,这台机器需要多少 QPS?
( 3000000 * 0.8 ) / ( 86400 * 0.2 ) = 139 (QPS)

如果一台机器的 QPS 是 58,需要几台机器来支持?
139 / 58 = 3

PV

Page View,页面访问量,即页面浏览量或点击量,用户每次刷新即被计算一次。可以统计服务一天的访问日志得到。

UV

Unique Visitor,独立访客,统计 1 天内访问某站点的用户数。可以统计服务一天的访问日志并根据用户的唯一标识去重得到。

DAU

Daily Active User,日活跃用户数量。常用于反映网站、APP、网游的运营情况。DAU 通常统计一日(统计日)之内,登录或使用了某个产品的用户数(去除重复登录的用户),与 UV 概念相似。

MAU

Month Active User,月活跃用户数量,指网站、APP 等去重后的月活跃用户数量。

服务端性能影响的因素

衡量服务性能的指标,主要有两个:

1)QPS(Query Per Second,每秒请求数)
2)响应时间(Response Time,RT),它可以理解为服务器处理响应的耗时。

正常情况下,响应时间越短,QPS 则越高。

在单线程的情况下,是呈线性关系。但也不是无限增长,RT 总会有极限值。

单线程 QPS = 1000ms / RT
多线程 QPS = (1000ms / 响应时间) * 线程数

最佳线程数

刚好消耗完服务器的瓶颈资源的临界线程数,公式如下

最佳线程数 = ( ( 线程等待时间 + 线程 CPU 时间 ) / 线程 CPU 时间 ) * CPU 数量

特点

1)在达到最佳线程数后,线程数量继续递增,QPS 不变,而响应时间变长,持续递增线程数量,QPS 开始下降;

2)每个系统都有其最佳线程数量,但是不同状态下,最佳线程数量是会变化的;

3)瓶颈资源可以是 CPU,可以是内存,可以是锁资源,IO 资源。超过最佳线程数会导致资源的竞争,超过最佳线程数会使响应时间增加;

唯有热爱可抵岁月漫长。我是今越,欢迎大家点赞、收藏和评论,感谢支持!

相关文章:

软件开发中的常用性能指标

大家好!我是今越。在软件开发中我们经常会遇到一些性能指标,下面就带大家一起来看看。 QPS Queries Per Second,每秒查询率,一台服务器每秒能够响应的查询次数。它是对一个特定的查询服务器在规定时间内所处理流量多少的衡量标准…...

cmakelist使用总结

支持能编译成在不同系统上运行程序的方法 我们代码就一份,但有时需要编译成arm32,有时需要编译成x86_64,或更多 1、首先先将代码定义一个名称: #将所有的源文件列为一个集合,集合名字叫做SRC_LISTS set(SRC_LISTS main.cpp A.cpp…...

准备阶段 Unity优化总纲

Unity优化总纲 我们在学习优化课程之前要预先做好准备功能 例如最主要是的接收到一个优化的任务,应该怎么做,其次怎么做,最后怎么做。 也要学习一些专业工具以及专业术语 了解游戏运行机制,在排查期间思路会更清晰 1.优化目的…...

ubuntu防火墙(三)——firewalld使用与讲解

本文是Linux下,用ufw实现端口关闭、流量控制(二) firewalld使用方式 firewalld 是一个动态管理防火墙的工具,主要用于 Linux 系统(包括 Ubuntu 和 CentOS 等)。它提供了一个基于区域(zones)和服务&#x…...

zookeeper 搭建集群

基础的java 环境先安好,选择3台虚拟机 ip 不一样 机器应为奇数个 zookeeper 奇数个节点实际上是(2*n-1) 比偶数台机器少一台解决成本,并且能够满足 zookeeper 集群过半选举leader 的规则 # 3台虚拟机 将zookeeper 解压到服务器上 #在 conf/ 目录下 找到zoo_s…...

Java——异常机制(下)

1 异常处理之(捕获异常) (一般处理运行时异常) (try-catch-finally子句) (finally一般用于文件最后关闭) (catch捕获的子类在前父类在后——>不然父类在前面都让父类捕获掉了,会报错) (Exception是父类放在最后,如果前面没有捕获到,就…...

centos 手动安装libcurl4-openssl-dev库

下载源代码 curl downloadshttps://curl.se/download/ 选择需要下载的版本,我下载的是8.11.0 解压 tar -zxvf curl-8.11.0 查看安装命令 查找INSTALL.md,一般在docs文件夹下 –prefix :指定安装路径(默认安装在/usr/local&…...

JS学习(1)(基本概念与作用、与HTML、CSS区别)

目录 一、JavaScript是什么? (1)基本介绍 (2)简称:JS? 二、JavaScript的作用。 三、HTML、CSS、JS之间的关系。 (1)html、css。 (2)JavaScript。 …...

代码随想录算法训练营day50|动态规划12

不同的子序列 给定一个字符串 s 和一个字符串 t ,计算在 s 的子序列中 t 出现的个数。、 编辑距离中的删除元素,其实就是直接变数字,其只删除原来的较长的数组里的元素 递推模拟,使用s的最后一个元素匹配,或者删除…...

JavaWeb学习(2)(Cookie原理(超详细)、HTTP无状态)

目录 一、HTTP无状态。 (1)"记住我"? (2)HTTP无状态。 (3)信息存储客户端中。如何处理? 1、loaclStorage与sessionStorage。 2、Cookie。 二、Cookie。 (1&…...

java抽象类

目录 一.抽象类 1.什么是抽象类 2.抽象类特点 (1)抽象类不能直接实例化对象 (2)可以包含抽象方法和具体方法 (3)可以有构造方法 (4)抽象类必须被继承,并且继承后子类要重写父类中的抽象方法,否则子类也是抽象类,必须要使用 abstract 修…...

minio集群部署–linux环境

原文地址:minio集群部署–linux环境 – 无敌牛 欢迎参观我的个人博客:无敌牛 – 技术/著作/典籍/分享等 第一步:安装 有rpm、deb、和二进制文件安装方式。参考文档在:MinIO Object Storage for Linux — MinIO Object Storage …...

在vue3里使用scss实现简单的换肤功能

实现的换肤功能:主题色切换、亮色模式和暗黑模式切换、背景图切换 主题色就是网站主色,可以配置到组件库上面;亮色模式又分为两种风格:纯白风格和背景图风格,不需要背景图的话可以删掉这部分逻辑和相关定义&#xff1b…...

JavaScript编写css自定义属性

一、自定义属性 是在 CSS 中定义的变量,以 --开头。它们可以存储颜色、尺寸、字体等任何 CSS 值,并且可以在整个文档中重复使用。 :root {--primary-color: #3498db;--font-size: 16px; }body {color: var(--primary-color);font-size: var(--font-siz…...

我们来学webservie - WSDL

WSDL 题记WSDL系列文章 题记 举个例子 酒桌上大领导们谈笑风生,把酒临风,其喜洋洋者矣老张说能签下xx项目,一来证明了集团在行业中的翘楚地位,二来感谢各位领导给予的大力支持接下来的一周,项目经理、业务顾问相继入场&#xff0…...

【Agent】构建智能诗歌创作系统:基于多 Agent 的协同创作实现

在探索大语言模型的创意应用过程中,我们开发了一个基于多 Agent 的智能诗歌创作系统。本文将介绍如何通过多个专业化的 Agent 协同工作,实现根据地点和天气信息自动创作诗歌的功能。 GitHub Code 项目地址 核心架构设计 1. Agent 基类设计 from pydan…...

001 LVGL PC端模拟搭建

01 LVGL模拟器介绍 使用PC端软件模拟LVGL运行,而不需要任何嵌入式硬件 环境搭建:codeblocks-20.03mingw-setup 正常安装流程即可 工程获取:LVGL官网-> github仓库 本地安装包下载资源包 工程模版和软件安装包 补充:…...

AJAX三、XHR,基本使用,查询参数,数据提交,promise的三种状态,封装-简易axios-获取省份列表 / 获取地区列表 / 注册用户,天气预报

一、XMLHttpRequest基本使用 XMLHttpRequest(XHR)对象用于与服务器交互。 二、XMLHttpRequest-查询参数 语法: 用 & 符号分隔的键/值对列表 三、XMLHttpRequest-数据提交 核心步骤 : 1. 请求头 设置 Content-Type 2. 请求体 携带 符合要求 的数…...

mybatis之数据统计与自定义异常处理

文章目录 需求描述定义实体方式一、mybatisPlus实现方式二、自定义SQL实现简单查询过滤查询 异常处理1、SQL拼写异常 在使用Mybatis或MybatisPlus进行数据统计,在【 SpringBoot的Mybatis-plus实战之基础知识】中对mybatisplus引入有介绍,本次要使用其进…...

qt creator使用taglib读取音频元信息,windows平台vcpkg安装

注意:qt creator用的构建组件是qt 6.2.3 MSVC2019 64bit 安装vcpkg // 我的安装位置C:\vcpkg git clone https://github.com/microsoft/vcpkg.git C:\vcpkg cd C:\vcpkg .\bootstrap-vcpkg.bat// 设置系统环境变量 VCPKG_ROOT C:/vcpkg用vcpkg安装taglib vcpkg …...

OpenLayers 可视化之热力图

注:当前使用的是 ol 5.3.0 版本,天地图使用的key请到天地图官网申请,并替换为自己的key 热力图(Heatmap)又叫热点图,是一种通过特殊高亮显示事物密度分布、变化趋势的数据可视化技术。采用颜色的深浅来显示…...

简易版抽奖活动的设计技术方案

1.前言 本技术方案旨在设计一套完整且可靠的抽奖活动逻辑,确保抽奖活动能够公平、公正、公开地进行,同时满足高并发访问、数据安全存储与高效处理等需求,为用户提供流畅的抽奖体验,助力业务顺利开展。本方案将涵盖抽奖活动的整体架构设计、核心流程逻辑、关键功能实现以及…...

376. Wiggle Subsequence

376. Wiggle Subsequence 代码 class Solution { public:int wiggleMaxLength(vector<int>& nums) {int n nums.size();int res 1;int prediff 0;int curdiff 0;for(int i 0;i < n-1;i){curdiff nums[i1] - nums[i];if( (prediff > 0 && curdif…...

Mac软件卸载指南,简单易懂!

刚和Adobe分手&#xff0c;它却总在Library里给你写"回忆录"&#xff1f;卸载的Final Cut Pro像电子幽灵般阴魂不散&#xff1f;总是会有残留文件&#xff0c;别慌&#xff01;这份Mac软件卸载指南&#xff0c;将用最硬核的方式教你"数字分手术"&#xff0…...

Caliper 配置文件解析:config.yaml

Caliper 是一个区块链性能基准测试工具,用于评估不同区块链平台的性能。下面我将详细解释你提供的 fisco-bcos.json 文件结构,并说明它与 config.yaml 文件的关系。 fisco-bcos.json 文件解析 这个文件是针对 FISCO-BCOS 区块链网络的 Caliper 配置文件,主要包含以下几个部…...

听写流程自动化实践,轻量级教育辅助

随着智能教育工具的发展&#xff0c;越来越多的传统学习方式正在被数字化、自动化所优化。听写作为语文、英语等学科中重要的基础训练形式&#xff0c;也迎来了更高效的解决方案。 这是一款轻量但功能强大的听写辅助工具。它是基于本地词库与可选在线语音引擎构建&#xff0c;…...

【Java学习笔记】BigInteger 和 BigDecimal 类

BigInteger 和 BigDecimal 类 二者共有的常见方法 方法功能add加subtract减multiply乘divide除 注意点&#xff1a;传参类型必须是类对象 一、BigInteger 1. 作用&#xff1a;适合保存比较大的整型数 2. 使用说明 创建BigInteger对象 传入字符串 3. 代码示例 import j…...

管理学院权限管理系统开发总结

文章目录 &#x1f393; 管理学院权限管理系统开发总结 - 现代化Web应用实践之路&#x1f4dd; 项目概述&#x1f3d7;️ 技术架构设计后端技术栈前端技术栈 &#x1f4a1; 核心功能特性1. 用户管理模块2. 权限管理系统3. 统计报表功能4. 用户体验优化 &#x1f5c4;️ 数据库设…...

【Linux】Linux 系统默认的目录及作用说明

博主介绍&#xff1a;✌全网粉丝23W&#xff0c;CSDN博客专家、Java领域优质创作者&#xff0c;掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域✌ 技术范围&#xff1a;SpringBoot、SpringCloud、Vue、SSM、HTML、Nodejs、Python、MySQL、PostgreSQL、大数据、物…...

LabVIEW双光子成像系统技术

双光子成像技术的核心特性 双光子成像通过双低能量光子协同激发机制&#xff0c;展现出显著的技术优势&#xff1a; 深层组织穿透能力&#xff1a;适用于活体组织深度成像 高分辨率观测性能&#xff1a;满足微观结构的精细研究需求 低光毒性特点&#xff1a;减少对样本的损伤…...