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

news2024/12/23 14:21:27

文章目录

    • 概要
    • 优化指标-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.coloradmin.cn/o/1465979.html

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

相关文章

如何管理Windows Server磁盘分区?

Windows Server系统内置的分区软件有哪些? 系统内置的Windows Server分区管理软件主要分为两个——磁盘管理工具和Diskpart命令。其中磁盘管理工具可以帮助人们进行基础的磁盘、分区或卷管理任务,Diskpart命令则是在命令提示符中使用命令行来管理磁盘分…

如何将新标注的三元组数据转换成unicoqe可以处理的格式

目录 问题描述: 问题解决: 问题描述: 原始的标注的三元组格式如下: 需要转换的格式如下: tips:有一个小的难点: 1. 针对多三元组的情况,需要额外考虑 2. 最后一个样本,也记得需要处理

QEMU之CPU虚拟化

概述 KVM是由以色列初创公司Qumranet在CPU推出硬件虚拟化之后开发的一个基于内核的虚拟机监控器。 KVM是一个虚拟化的统称方案,除了x86外,ARM等其他架构也有自己的方案,所以KVM的主体代码位于内核树virt/kvm目录下面,表示所有CP…

JUC并发编程最新面试题(持续更新)

JUC并发编程 1 并发编程的优缺点为什么要使用并发编程(并发编程的优点) 充分利用多核CPU的计算能力:通过并发编程的形式可以将多核CPU 的计算能力发挥到极致,性能得到提升方便进行业务拆分,提升系统并发能力和性能&a…

服务器被黑该如何查找入侵痕迹以及如何防御攻击

当公司的网站服务器被黑,被入侵导致整个网站,以及业务系统瘫痪,给企业带来的损失无法估量,但是当发生服务器被攻击的情况,作为服务器的维护人员应当在第一时间做好安全响应,对服务器以及网站应以最快的时间…

深入了解Git

1.1 Git 的工作流程简介 克隆 Git 资源作为工作目录 在克隆的资源上添加或修改文件 如果其他人修改了,你可以更新资源 在提交前查看修改 提交修改 在修改完成后,如果发现错误,可以撤回提交并再次修改并提交 1.2 Git 工作区、暂存区和版…

86、移除推理路径上的所有内存操作

动态申请内存的影响,前两节已经介绍过了,细心的朋友可能会发现,在使用 C++实现的 resnet50 代码中,还存在一处动态申请内存的操作。 那就是对于每一层的输入或输出 feature map 数据进行内存申请,比如在 3rd_preload/ops/conv2d.cc 文件中,卷积的计算中存在对于输出 fea…

postgresql矢量切片坐标转换的ST_AsMVTGeom函数使用

一、函数签名 geometry ST_AsMVTGeom(geometry geom, box2d bounds, integer extent4096, integer buffer256, boolean clip_geomtrue); 二、描述 将一个图层中位于参数box2d范围内的一个几何图形的所有坐标转换为MapBox VectorTile坐标空间里的坐标。 该函数会尽量保持、甚至纠…

Excel Ctrl + G快捷键快速标记不同

一. 需求 如下图所示,水果的预计销量和实际销量存在差异,现在想把与预计销量不同的实际销量标记出来。 二. Ctrl G 快捷键 ⏹如下图所示,先选中比较区域后,按下Ctrl G快捷键调出定位条件面板, 然后选择行内容差异…

PostgreSQL 的实体化视图介绍

PostgreSQL 实体化视图提供一个强大的机制,通过预先计算并将查询结果集存储为物理表来提高查询性能。本教程将使用 DVD Rental Database 数据库作为演示例子,指导你在 PostgreSQL中创建实体化视图。 了解实体化视图 实体化视图是查询结果集的快照&…

盘点全网好用的ai伪原创工具

在信息内容发展的今天,写作在我们每个人的生活当中息息相关。可能写作对于有的人来说很简单,但对于有些人来说可能也会很难,幸运的是,我们在这个技术发达的今天,对于很多难题都是可以迎刃而解的,即使对于那…

arcgisPro制图输出

1、设置地图底图 2、导入数据 3、 设置图形颜色,如下:右键“浙江省”数据层,选择符号系统 4、在右侧可看到打开的符号系统栏,进行如下设置: 5、移除“其他所有值”项,如下: 6、设置图形轮廓,如下…

300分钟吃透分布式缓存-11讲:MC如何淘汰冷key和失效key?

淘汰策略 Mc 作为缓存组件,意味着 Mc 中只能存储访问最频繁的热数据,一旦存入数据超过内存限制,就需要对 Mc 中的冷 key 进行淘汰工作。Mc 中的 key 基本都会有过期时间,在 key 过期后,出于性能考虑,Mc 并…

创新性3D数据合成模型,微软推出EgoGen

随着AR、VR等设备的广泛应用,第一人称的应用开始增多。但在研发方面面临不同的挑战,例如,图像模糊、视觉混乱、遮挡更严重等,给视觉模型的训练带来重大挑战。 一方面,人工标注真实第一视角数据集,来培训深度学习模型的成本和难度都很高。另一…

Python基于PyQt打包一个exe应用程序

一、环境搭建 1、安装python地三方库 pip install PyQt5 pip install pyqt5-tools pip install pyinstaller 2、下载并安装Qt Designer 下载地址:https://build-system.fman.io/qt-designer-download 二、QT Design使用 1、控件布局 2、布局好之后保存文件,Ctrl+s 保存为…

时域系统到频域响应的直观解析及数学推导

课本里经常有已知系统时域的差分方程,求系统的频率响应这样的题,老师会讲怎么带公式进去解决,怎么查表解决,但我们总时无法直观地理解这两种转换的特殊关联在哪里,这篇文章以FIR滤波器为例,不仅列出了课本里…

Nginx网络服务二-----(虚拟机和location)

一、HTTP设置 1.设置虚拟主机 1.1Nginx 基于域名---虚拟主机 include /apps/nginx/conf.d/*.conf; 1.2Nginx 基于端口---虚拟主机 在做了域名的基础上,按照以下步骤继续 1.3Nginx 基于IP---虚拟主机 2.server下的root root路径格式 指定文件的路径 url …

集合、List、Set、Map、Collections、queue、deque

概述 相同类型的数据进行统一管理操作,使用数据结构、链表结构,二叉树 分类:Collection、Map、Iterator 集合框架 List接口 有序的Collection接口,可以对列表中的每一个元u尿素的插入位置进行精确的控制,用户可以根…

【Django】Django自定义后台表单——对一个关联外键对象同时添加多个内容

以官方文档为例: 一个投票问题包含多个选项,基本的表单设计只能一个选项一个选项添加,效率较低,如何在表单设计中一次性添加多个关联选项? 示例代码: from django.contrib import adminfrom .models impo…

nios ii开发随笔

错误一: d:/intelfpga/17.1/nios2eds/bin/gnu/h-x86_64-mingw32/bin/../lib/gcc/nios2-elf/5.3.0/../../../../../H-x86_64-mingw32/nios2-elf/bin/ld.exe: test.elf section .text will not fit in region ram_oc_xzs d:/intelfpga/17.1/nios2eds/bin/gnu/h-x86_6…