项目性能优化之性能问题分析和压力测试

  • 性能问题分析
    • 为什么要性能优化
    • 影响性能的关键要素
    • 性能优化出发点
  • 性能压力测试
    • 什么是压力测试
    • 压力测试的指标
  • 常用压测工具

性能问题分析

为什么要性能优化

应用性能是产品用户体验的基石,性能优化的终极目标是优化用户体验。当我们谈及性能,最直观能想到的词是“快”,那到底怎么快的衡量标准是什么呢?
3s定律:页面加载速度超过3s,57%的访客会离开
SEO排名:网页加载速度在Google,百度等搜索引擎的PR评分中也占有一定的比例,会影响到网站的SEO排名

影响性能的关键要素

  • 产品设计:产品逻辑、功能交互、动态效果、页面元素

    • 12306购票案例查询按钮的设计
  • 基础网络:网络=连接介质+计算终端
    • 连接介质:电缆、双绞线、光纤、载波或通信卫星
    • 计算终端:PC、手机、可穿戴设备等
    • 基础网络设施、互联网、局域网(LAN)、城域网(MAN)、广域网(WAN)
  • 代码质量&架构
    • 架构不合理
    • 研发功底和经验不足
    • 没有性能意识
  • 移动端环境
  • 硬件及云服务
  1. 架构不合理:业务发展超越架构支撑能力而导致系统负荷过载,进而导致出现系统崩溃、响应超时等现象。另外不合理的架构如:单点、无cache、应用混部署、没有考虑分布式、集群化等也都会影响性能
  2. 研发功底和经验不足:开发的APP、server效率和性能较低、不稳定也是常见的事情
  3. 没有性能意识:只实现了业务功能不注意代码性能,新功能上线后整体性能下降,或当业务上量后系统出现连锁反应,导致性能问题叠加,直接影响用户体验。多数的性能问题发生在数据库上,由慢SQL、过多查询等原因造成的数据库瓶颈,没有做读写分离、分表分库等

性能优化出发点

  • 后端:RT、TPS、并发数、Throughput、Footprint、Latency

    • TPS和RT的影响因素:数据库读写、RPC、网络IO、逻辑技术复杂度、JVM
  • Web端:首屏时间、白屏时间、可交互时间、完全加载时间等
  • 移动端:端到端响应时间、Crash率、内存使用率、FPS等

首屏时间是指从用户打开网页开始到浏览器第一屏渲染完成的时间,是最直接的用户感知体验指标,也是性能领域公认的最重要的核心指标。
首屏时间=DNS时间+建立连接的时间+后端响应时间+网络传输时间+首屏页面渲染时间
FPS是体现页面顺畅程度的一个重要指标
端到端响应时间是衡量一个API性能的关键指标,比纯后端响应时间更全面,它会受到DNS、网络带宽、网络链路、HTTP PayLoad等多个因素的影响
端到端响应时间=DNS解析时间+网络传输时间+后端响应时间

性能压力测试

什么是压力测试

压力测试(Stress testing)是针对特定系统或是组件,为要确认其稳定性而特意进行的严格测试。会让系统在超过正常使用条件下运作,然后再确认其结果。

压力测试的指标

指标 含义
响应时间(RT) 响应时间是指系统对请求作出响应的时间,对于单用户的系统,响应时间可以很好的度量系统的性能
吞吐量(Throughput) 吞吐量是指系统在单位时间内处理请求的数量,每秒事务数TPS是吞吐量的一种
并发用户数 并发用户数是指系统可以同时承载的正常使用系统功能的用户的数量,用户不同的使用模式会导致不同用户在单位时间发出不同数量的请求
错误率 失败请求占比,在测试时添加响应断言,验证不通过即记为错误,若不添加,响应码非200即为错误
资源利用率 CPU占用率、内存使用率、系统负载、网络I/O

以上主要的四种性能指标【响应时间、并发用户数、吞吐量、资源使用率】它们之间存在一定的相关性,共同反映出性能的不同方面。

在上图中,定义了三条曲线、三个区域、两个点以及三个状态描述

  • 三条曲线:

    • 吞吐量的曲线(紫色)
    • 利用率(绿色)
    • 响应时间曲线(深蓝色)
  • 三个区域:
    • 轻负载区(Light Load)
    • 重负载区(Heavy Load)
    • 塌陷区(Buckle Zone)
  • 两个点:
    • 最优并发用户数(The Optimum Number of Concurrent Users)
    • 最大并发用户数(The Maximum Number of Concurrent Users)
  • 三个状态描述:
    • 资源饱和(Resource Saturated)
    • 吞吐下降(Throughput Falling)
    • 用户受影响(End Users Effected)

常用压测工具

  1. Apache Jmeter:可视化的测试工具
  2. Apache的ab压力测试
  3. Nginter 韩国研发
  4. PAS 阿里测试工具
  5. MeterSphere:国内持续测试的开源平台

https://jmeter.apache.org/
http://www.jmeter.com.cn/2747.html
Apache JMeter是Apache组织开发的基于Java的压力测试工具。用于对软件做压力测试,它最初被设计用于Web应用测试,但后来扩展到其他测试领域。 它可以用于测试静态和动态资源,例如静态文件、Java 小服务程序、CGI 脚本、Java 对象、数据库、FTP 服务器等等。JMeter可以用于对服务器、网络或对象模拟巨大的负载,来自不同压力类别下测试它们的强度和分析整体性能。另外,JMeter能够对应用程序做功能/回归测试,通过创建带有断言的脚本来验证程序返回期望的结果。为了最大限度的灵活性,Jmeter允许使用正则表达式创建断言

项目性能优化之性能问题分析和压力测试相关推荐

  1. JVM性能优化之GC日志分析

    JVM性能优化之GC日志分析 文章目录 JVM性能优化之GC日志分析 前言 一.GC日志参数 GC日志参数 常用的垃圾收集器配置 大对象回收 二.GC日志分析工具 GCeasy JVM memory ...

  2. 字节跳动Android三面视频解析:framework+MVP架构+HashMap原理+性能优化+Flutter+源码分析等

    前言 对于字节跳动的二面三面而言,Framework+MVP架构+HashMap原理+性能优化+Flutter+源码分析等问题都成高频问点!然而很多的朋友在面试时却答不上或者答不全!今天在这分享下这些 ...

  3. 【Linux 性能优化系列】Linux 性能优化 -- CPU 性能篇(一) 平均负载、上下文切换、CPU 使用率

    [Linux 性能优化系列]Linux 性能优化 -- CPU 性能篇(一) 平均负载.上下文切换.CPU 使用率 [1]相关概念 [1.1]平均负载 平均负载是指单位时间内,系统处于可运行状态和不可 ...

  4. 【Linux 性能优化系列】Linux 性能优化 -- CPU 性能篇(三) Linux 软中断

    [Linux 性能优化系列]Linux 性能优化 -- CPU 性能篇(三) Linux 软中断 [1]相关概念 [1.1]中断 中断其实是一种异步的事件处理机制,可以提高系统的并发处理能力:为了减少 ...

  5. 前端性能优化 —— 前端性能分析

    (点击上方公众号,可快速关注) 作者:ouven https://my.oschina.net/zhangstephen/blog/1601380 前端性能优化是一个很宽泛的概念,本书前面的部分也多多 ...

  6. 性能优化之思路和分析

    .优化思路 尽可能减少首屏必须资源的体积 尽可能提前首屏必须资源/接口的请求发起时机 延后+闲时预缓存非必要资源/请求 代码分离 https://webpack.docschina.org/guide ...

  7. 查询性能优化(使用 Explain 进行分析、优化数据访问、重构查询方式)、存储引擎(InnoDB/MyISAM)

    1.查询性能优化 1.1 使用 Explain 进行分析 Explain 用来分析 SELECT 查询语句,开发人员可以通过分析 Explain 结果来优化查询语句. 比较重要的字段有: select ...

  8. NXP CPU 网卡性能优化的一次分析

    硬件环境: NXP T1042(Power PC)  4Core 的CPU CPU 内部的 MAC 千兆 PHY :88E1512 内核版本: 4.9版本内核 测试方法: 使用 BigTao 220 ...

  9. mysql_性能优化一(慢查询分析)

    4.1 总论 MySQL 性能优化其实是个很大的课题,在优化上存在着一个调优金字塔的说法: 很明显从图上可以看出,越往上走,难度越来越高,收益却是越来越小的. 比如硬件和 OS 调优,需要对硬件和 O ...

最新文章

  1. 【Android RTMP】音频数据采集编码 ( AAC 音频格式解析 | FLV 音频数据标签解析 | AAC 音频数据标签头 | 音频解码配置信息 )
  2. xml gridview控件增删改查_Mybatis之XML如何映射到方法
  3. 中兴手机数据通道打不开_中兴手机有流量,但是数据开不了怎么办?
  4. latex改变文字类型
  5. image加载图片 ui unity_【Unity游戏客户端框架搭建】四、资源管理之理论篇
  6. python转txt到xml并编译为exe
  7. Python练手项目:计算机自动还原魔方(3)还原两层
  8. 实现省市县的两种方式
  9. 简单BFS 紫书 UVA 1600 巡逻机器人(Patrol Robot)
  10. 剑指 offer 题目分析及答案
  11. 陌陌和它的解药,聊聊出海社交产品的思路
  12. 银河大百科【宇宙的数量级】
  13. Linux 从零开始部署RocketMQ集群遇到的问题
  14. 许昌高中高考2021成绩查询,许昌高中成绩排名2021,许昌中考分数线排行榜
  15. 关于温度气压传感器MS5611计算公式—温度低于20℃时出错问题的解决办法及验证结果
  16. Elasticsearch专栏-1.为什么引入es
  17. vbs合集……你懂的
  18. Rosetta Stone罗塞塔:Fatal Application Error #1141
  19. 【网络模拟】Network Emulator for Windows Toolkit
  20. 微服务应用故障定位系统实现原理剖析

热门文章

  1. 【论文阅读】Alignment-Robust Cancelable Biometric Scheme for Iris Verification
  2. Debian内核防毒AntiVir安装
  3. EBS设置问题_发票验证按钮是灰色的
  4. 基于微信小程序云开发实现的婚礼邀请函模板,可以自行定制开发
  5. python中re.match和re.search和re.findall的用法
  6. Django实训:图书信息管理系统
  7. 使用纯 python 实现 Instruments 协议,跨平台 (win,mac,linux) 获取 iOS 性能数据
  8. PTA 7-1 宿舍谁最高?(20分)
  9. 河南对口计算机本科学校有哪些,河南省计算机专业对口升学能上什么大学
  10. 算法复杂度:算法时间复杂度和空间复杂度表示法