真的是性能优化(压测)-纯思想

文章目录

    • 概要
    • 优化指标-MD都是文字看看就行
    • 性能优化操作
      • 1、代码优化:
      • 2、系统配置与环境优化:
      • 3、架构与设计:
      • 4、~~实施与监控:~~
      • 5、~~开发流程和环境管理:~~
    • 总结

概要

性能优化是一个持续的过程,需要监控、评估、调整以及不断测试。
利用性能监控工具,结合日志分析,可以对上述指标进行度量和分析,从而发现和解决性能瓶颈。

在进行压测时,不应该仅针对单一接口进行测试,因为系统是一个统一的整体,包含众多互相作用的部分。
测试应该基于真实用户行为对一系列用户场景(包含多个接口)进行模拟,以此来反映用户的真实操作流程。
因此,在项目开发中,了解并模拟用户真实行为是进行有效性能压测的重要条件。

一般而言,由于很多应用程序是读密集型的,因此压测更侧重于模拟查询操作。但是,写操作(包含新增、删除和修改)同样应该纳入压力测试的范畴,尽管这可能会涉及到更多的成本和资源考虑。因为写操作通常伴随着事务处理、锁定机制、数据一致性和安全性等挑战,因此对这些操作的测试不可忽视。如果不进行这些操作的测试,可能会导致生产环境下未被发现的性能瓶颈或问题。

在进行写操作的性能测试时,需要制定策略来管理数据的一致性和完整性。例如,可以在独立的测试环境中进行测试,并确保有数据备份和恢复的机制,以防测试引起数据错乱或丢失。这样的措施可以帮助准确评估应用程序在高负载情况下的表现,同时保护测试环境的数据安全。

提示:但是实际开发过程中仅仅是对查询做压测的比较多一些,增删改相对较少
主要原因有:

  • 查询优先:很多应用(尤其是读多写少的系统,如新闻、视频平台)有更高的查询请求比例,因此查询操作的性能对整体系统性能影响更大,从而成为压测的重点。

  • 数据一致性和完整性:增删改操作往往涉及数据的变更,如果在没有充分准备的情况下进行大量写操作的压测,可能会导致测试环境数据的混乱,影响测试的准确性。

  • 成本和资源考虑:增删改操作可能涉及复杂的事务处理、锁定机制、数据备份等,这些都是资源密集型的操作。在测试环境模拟高负载的写操作可能需要额外的资源和成本,例如备份和还原数据的机制,以确保测试后系统可以返回到稳定的状态。

  • 风险管理:写操作还可能引起数据丢失或损坏的风险,所以需要特别小心地对待。

优化指标-MD都是文字看看就行

用户体验层:直接关乎用户感知的指标。

  • 响应时间和延迟:用户感知到的页面加载或交互反馈时间。
  • 错误率:用户遇到的错误数量(页面加载失败、功能不可用等)。

应用性能层:影响应用运行的关键性能指标。

  • 吞吐量:整个应用能够处理的请求数量。
  • 并发用户数:系统能够支持的同时在线用户数量。
  • 缓存命中率:反映了缓存策略的有效性,影响响应速度和后端压力。

资源利用层:反映了系统对硬件资源的使用情况。

  • CPU使用率:CPU的占用情况,过高可能表示计算瓶颈。
  • 内存使用量:系统对物理内存和堆内存的占用情况。
  • 磁盘I/O:反映了磁盘读写的压力,I/O密集型的应用这是一个重要指标。
  • 网络I/O:网络数据传输的压力情况。

稳定性和可靠性层:直接影响服务的持续可用性。

  • 服务水平协议(SLA)指标:包含可用性、性能、性能等级,直接反映服务的可靠性和用户的期望。

  • 系统吞吐量:在稳定性的前提下,系统能持续处理的最大数据量。

  • 队列长度:系统中排队等待的任务数量,反映了系统负载和处理能力。

垃圾回收和内存管理层:影响应用性能和稳定性的底层机制。

  • 垃圾回收次数和暂停时间:频繁或不当的垃圾回收会影响应用的性能。
  • 内存泄露:随着运行时间的累积可能会导致应用奔溃,影响稳定性。

数据存取层:通常与数据库和数据存储相关。

  • 数据库性能:包括查询性能、锁定竞争、索引效率等,直接关系到应用的数据处理能力。

性能优化操作

1、代码优化:

  • 算法与逻辑优化

  • 代码结构重构

  • 数据访问和持久化

  • 缓存机制

  • 并发控制和锁优化

  • 异常处理和资源管理

2、系统配置与环境优化:

  • JVM配置调优(内存设置、垃圾收集调优等)
  • 应用服务器优化(线程池、连接池等)
  • 操作系统调优(网络参数、I/O优化等)
  • 数据库优化(索引、查询优化、配置参数等)
  • 中间件配置(消息队列、缓存服务器等)

3、架构与设计:

  • 系统架构(微服务、分布式设计、服务拆分等)
  • API设计与优化(RESTful、gRPC等)
  • 负载均衡与扩展性
  • 静态内容分发(CDN使用、资源压缩等)

4、实施与监控:

性能测试(基准测试、压力测试等)
监控、警报和日志分析(应用监控、数据库监控等)
自动化和持续集成
安全性与合规(避免引入性能开销大的安全检查)

5、开发流程和环境管理:

代码审查流程
敏捷开发与迭代
版本控制和代码合并策略
环境一致性(开发、测试、生产环境保持一致)

总结

若是有不足的地方还希望能指出来,共同完善,不胜感激
路虽远,行则将至,事虽难,作则必成
总想做好这件事情,但是奈何自己能力有限,古话讲
一个好汉三个帮,一个篱笆三个桩。希望能遇到志同道合的朋友
在这里插入图片描述

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

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

相关文章

神经网络系列---感知机(Neuron)

文章目录 感知机(Neuron)感知机(Neuron)的决策函数可以表示为:感知机(Neuron)的学习算法主要包括以下步骤:感知机可以实现逻辑运算中的AND、OR、NOT和异或(XOR)运算。 感知机(Neuron) 感知机(Neuron)是一种简单而有效的二分类算法,用于将输入…

android input命令支持多指触摸成果展示-千里马framework实战开发

hi input命令扩展提示部分 generic_x86_64:/ # input -h Error: Unknown command: -h Usage: input [<source>] <command> [<arg>...]The source…

数智化转型的三大关键点

一、重新认识数智化转型 消费红利时代&#xff0c;伴随中国宏观经济向好发展&#xff0c;相当一部分企业可以轻松实现快速增长&#xff0c;如同搭乘了一架高速运转的电梯一路飞升。然而&#xff0c;随着宏观经济增速放缓&#xff0c;时代的电梯逐渐失去效力&#xff0c;中国商…

python3 Flask jwt 简易token认证实例

直接上代码 from flask import Flask, jsonify, request, make_response import jwt import datetime from functools import wrapsapp Flask(__name__)# 这是一个示例密钥&#xff0c;实际应用中应该使用一个复杂且随机的密钥 app.config[SECRET_KEY] your_secret_keydef t…

第九节HarmonyOS 常用基础组件24-Navigation

1、描述 Navigation组件一般作为Page页面的根容器&#xff0c;通过属性设置来展示的标题栏、工具栏、导航栏等。 2、子组件 可以包含子组件&#xff0c;推荐与NavRouter组件搭配使用。 3、接口 Navigation() 4、属性 名称 参数类型 描述 title string|NavigationComm…

源代码管理——码云Gitee

目录 Git安装 Gitee配置SSH 源代码管理常规操作 1.idea配置git 2.常规操作 Git安装 安装Git是进行源代码管理的基本步骤之一。以下是在本地安装Git的通用步骤&#xff0c;适用于Windows系统&#xff1a; 下载Git安装程序: 访问Git官网的下载页面&#xff1a;Git官网下载地…

【前端素材】推荐优质后台管理系统Welly平台模板(附源码)

一、需求分析 后台管理系统&#xff08;或称作管理后台、管理系统、后台管理平台&#xff09;是一种专门用于管理网站、应用程序或系统后台运营的软件系统。它通常由一系列功能模块组成&#xff0c;为管理员提供了管理、监控和控制网站或应用程序的各个方面的工具和界面。以下…

现在学Oracle是49年入国军么?

今天周末&#xff0c;不聊技术&#xff0c;聊聊大家说的最多的一个话题 先说明一下&#xff0c;防止挨喷&#x1f606; 本人并不是职业dba&#xff0c;对数据库就是爱好&#xff0c;偶尔兼职&#xff0c;以下仅个人观点分析&#xff0c;如有不同观点请轻喷&#xff0c;哈哈&…

【数据结构和算法初阶(c语言)】数据结构前言,初识数据结构(给你一个选择学习数据结构和算法的理由)

1.何为数据结构 数据结构(Data Structure)是计算机存储、组织数据的方式&#xff0c;指相互之间存在一种或多种特定关系的 数据元素的集合。本质来讲就是在内存中去管理数据方式比如我们的增删查改。在内存中管理数据的方式有很多种&#xff08;比如数组结构、链式结构、树型结…

【Java程序员面试专栏 数据结构】六 高频面试算法题:字符串

一轮的算法训练完成后,对相关的题目有了一个初步理解了,接下来进行专题训练,以下这些题目就是汇总的高频题目,本篇主要聊聊数组,包括数组合并,滑动窗口解决最长无重复子数组问题,图形法解下一个排列问题,以及一些常见的二维矩阵问题,所以放到一篇Blog中集中练习 题目…

openGauss学习笔记-228 openGauss性能调优-系统调优-LLVM使用建议

文章目录 openGauss学习笔记-228 openGauss性能调优-系统调优-LLVM使用建议 openGauss学习笔记-228 openGauss性能调优-系统调优-LLVM使用建议 目前LLVM在数据库内核侧已默认打开&#xff0c;用户可结合上述的分析进行配置&#xff0c;总体建议如下&#xff1a; 设置合理的wor…

Nginx基本操作

目录 引言 一、Nginx配置文件详解 &#xff08;一&#xff09;配置文件 &#xff08;二&#xff09;模块 二、全局配置文件 &#xff08;一&#xff09;关闭版本或修改版本 1.关闭版本号 2.修改版本信息 &#xff08;二&#xff09;修改启动的进程数 &#xff08;三&…

JavaScript+PHP实现视频文件分片上传

摘要 视频文件分片上传&#xff0c;整体思路是利用JavaScript将文件切片&#xff0c;然后循环调用上传接口 upload.php 将切片上传到服务器。这样将由原来的一个大文件上传变为多个小文件同时上传&#xff0c;节省了上传时间&#xff0c;这就是文件分片上传的其中一个好处。 上…

【黑马程序员】2、TypeScript介绍_黑马程序员前端TypeScript教程,TypeScript零基础入门到实战全套教程

课程地址&#xff1a;【黑马程序员前端TypeScript教程&#xff0c;TypeScript零基础入门到实战全套教程】 https://www.bilibili.com/video/BV14Z4y1u7pi/?share_sourcecopy_web&vd_sourceb1cb921b73fe3808550eaf2224d1c155 目录 2、TypeScript初体验 2.1 安装编译TS的工…

hbuilderx创建、运行uni-app

创建uni-app 在点击工具栏里的文件 -> 新建 -> 项目&#xff1a; 选择uni-app类型&#xff0c;输入工程名&#xff0c;选择模板&#xff0c;点击创建&#xff0c;即可成功创建。 uni-app自带的模板有 Hello uni-app &#xff0c;是官方的组件和API示例。还有一个重要模…

解决easyExcel模板填充时转义字符\{xxx\}失效

正常我们在使用easyExcel进行模板填充时&#xff0c;定义的变量会填充好对应的实际数据&#xff0c;未定义的变量会被清空&#xff0c;但是如果这个未定义的变量其实是模板的一部分&#xff0c;那么清空了就出错了。 在这张图里&#xff0c;上面的是模板填充后导出的文件&…

Guitar Pro8.2吉他软件2024中文版功能特点介绍

Guitar Pro 8.2是一款功能强大的吉他乐谱软件&#xff0c;专为吉他手、音乐制作人和音乐爱好者设计。它提供了丰富的功能&#xff0c;帮助用户轻松创建、编辑、打印和分享吉他乐谱。以下是Guitar Pro 8.2的主要功能特点&#xff1a; Guitar Pro 2024 win-安装包下载如下&#x…

华为HCIP Datacom H12-831 卷24

多选题 1、如图所示&#xff0c;某园区部署OSPF实现网络互通&#xff0c;其中Area1部署为NSSA区域。某工程师为了实现R1访问R4的环回口地址&#xff0c;在R4的OSPF进程中引入直连路由。以下关于该场景的描述,错误的有哪些项? A、在R4引入直连路由后&#xff0c;R1通过转换后的…

【鸿蒙开发】第十四章 Stage模型应用组件-任务Mission

1 任务(Mission)管理场景 任务&#xff08;Mission&#xff09;管理相关的基本概念如下&#xff1a; AbilityRecord&#xff1a;系统服务侧管理一个UIAbility实例的最小单元&#xff0c;对应一个应用侧的UIAbility组件实例。系统服务侧管理UIAbility实例数量上限为512个。 Mi…

Code-Audit(代码审计)习题记录6-7

介绍&#xff1a; 自己懒得搭建靶场了&#xff0c;靶场地址是 GitHub - CHYbeta/Code-Audit-Challenges: Code-Audit-Challenges为了方便在公网练习&#xff0c;可以随地访问&#xff0c;本文所有的题目均来源于网站HSCSEC-Code Audit 6、习题6 题目内容如下&#xff1a; 源代…