• YC-性能测试


    性能需求分析::

    1:需求分析关键字:
    • 系统用户:注册此系统的总用户量
    • 在线用户:在某段时间内登录且在线的用户
    • PV:用户/游客浏览页面的次数一个用户可以浏览多个页面
    • UV:登录系统的用户,UV可产生多个PV,:PV指的用户可以浏览多个页面
    • 性能测试:测试软件在系统中的运行性能,度量系统与预定义目标的差距
    • 负载测试:是性能测试的一种,通过逐步增加系统负载,确定在满足性能指标的情况下,被测系统最大所能承受的负载量
    • 压力测试:是性能测试的一种,通过逐步增加系统负载,确定在什么情况下系统失效,测试系统承受压力的极限
    • 容量测试:是性能测试的一种,通常和数据库有关,通常提前测试数据库达到某W行后系统的性能
    • 稳定性测试:系统在某个长的时间段,不断有压力,查看系统指标是否异常,系统是否会奔溃
    2:需求分析指标
    • tps:表示每秒服务器处理的事物数/业务数,还有一种叫法叫:每秒系统吞吐量
    • 事物成功率:一段时间内成功的请求在总请求数中的占比
    • 事物失败率:一段时间内失败的请求在总请求数中的站比
    • rt:表示服务器处理每个请求的响应时间,原则2s-5s-8s
    • 总并发用户数:同一时间访问系统上的用户总量,这些用户会分布在不同的功能模块上,比如三个用户同时登录系统
    • 总并发请求数:同一时间访问系统的用户同时想服务器做出的请求数量,比如上面三个用户登录系统,但是请求了不同模块,一个用户请求了5个那就是15
    • 总并发线程数:指压力测试工具用的线程数量
    案例

    1:案例
    在这里插入图片描述
    2:案例

    在这里插入图片描述
    3:案例
    在这里插入图片描述

    扩展知识
    1. 网络带宽:一般公司就会买1G的网络带宽,除以8等于125M,查看带宽看在浏览器上面F12查看请求返回的带宽,如果这次请求用了5kb那计算方式就是:125M=125000kb,125000/5=25000那么得出结论,当前这个请求最大并发就是25000并发
    2. **静态请求,动态请求:**静态请求是,html,js,cs,jpg这种请求,动态请求是java程序,redis/db数据库,静态请求一般不用进行压测,应为一般公司为了提高用户体验,都会在蓝汛购买cdn机器用来上传静态请求的文件,相当于第三方来进行管控
    性能需求分析总结:
    1. 静态资源不压测
    2. 动态资源需要压测
    3. tps先分析出,需要介入28原则
    4. rt和事物错误率与产品或领导人员确认
    5. 总并发线程数可先用1个线程做基准得出每秒tps,然后逐渐增加来达到总的tps数量
    性能测试计划:
    1. 版本历史
    2. 相关文档
    3. 项目背景
    4. 入口标准(被测系统的架构图)+被测系统的软件配置
    5. 测试内容(就是测试什么接口)
    6. 测试场景(单接口)(全链路混合场景)
    7. 角色和职责
    8. 测试计划(就是每个场景需要的工作时间)
    9. 出口标准(就是成功的标准是什么就是最终的效果)
    10. 风险

    中间键监控:

    nginx监控:

    手工监控
    1. nginx所在的机器上面安装zabbix-agent客户端
    2. 编写nginx监控的脚本,此脚本通过nginx服务器发送命令:/usr/bin/curl "http://localhost:80/status/通过grep,awk来进行命令结果的提取,分别有:
    方法名方法表示
    accepts总共处理了多少个连接
    handled成功创建多少握手
    requests总共处理了多少个请求
    Reading读取到客户端的Header信息数,表示正处于接收请求状态的连接数
    Writing返回给客户端的Header信息数,表示请求已经接收完成,且正处于处理请求或发送响应的过程中的连接数
    Waiting开启keep-alive的情况下,这个值等于active - (reading + writing),意思就是Nginx已处理完正在等候下一次请求指令的驻留连接

    在这里插入图片描述

    1. 添加nginx监控配置文件,UserParameter=nginx.status[*],/etc/zabbix/zabbix_agentd.d/nginx_status.sh $1此行意思是:接收nginx.status[*]接收*号的参数,并通过参数传入到nginx_status.sh这个脚本中,通过脚本识别出传入的方法
    2. 配置zabbix_agentd.conf,中配置:lnclude=nginx.conf路径+文件,这样配置后zabbix客户端启动后就可以加载这个配置文件到内存中,直接可以进行访问
    3. 重启zabbix客户端,zabbix server进行测试,zabbix_get -s ip -p 10050 -k “nginx.status[accepts]”:传入这个方法让脚本执行这个方法,得到zabbix客户端总共处理了多少个请求数
    4. zabbix服务端,上传该客户端服务器的nginx监控模本,添加后可进行监控客户端机器的nginx
      在这里插入图片描述
      总结: nginx因为模版中有键值会执行脚本方法,系统指标采集是应为zabbix agent底层有对应的代码可以采集
      在这里插入图片描述
    自动化监控:

    前提:准备推送机,zabbix-agent机器(安装nginx),zabbix-server机器
    1:脚本:

    • 把相关文件同步到远程机器上资源目录:/root/tools/shell/nginx/monitor
    • 脚本目录:/root/tools/shell/nginx/remote/remote_create_and_zabbix_agent_config/这个脚本功能是:安装zabbix-agent,配置zabbix-agent,启动zabbix-agent
    • 手动上传nginx监控的模版
    • 手动执行60上面的第一个脚本

    监控tomcat jvm:

    手工监控
    1. 前提准备:81,101部署的是tomcat,60作为推送机
    2. 安装zabbix-agent客户端,及配置上报数据

    压力机总结:

    上面的案例3进行压力机准备

  • 相关阅读:
    Swift -- 数组高阶函数
    指针进阶(详解)
    vue项目中实际封装DateRangePicker组件使用
    【高并发】通过源码深度分析线程池中Worker线程的执行流程
    R3Live系列学习(四)R2Live源码阅读(2)
    带有无偏移国内源GeoQ的folium
    LK光流法和LK金字塔光流法(含python和c++代码示例)
    Uniapp连接iBeacon设备——实现无线定位与互动体验(实现篇)
    汽车标定技术(五)--基于模型开发如何生成完整的A2L文件(1)
    2011年408大题总结
  • 原文地址:https://blog.csdn.net/weixin_38023156/article/details/126334104