互联网大厂必学技能:压力测试!

本文收录在猪哥GitHub: https://github.com/pig6/Java 中,本项目收集一线大厂面试、实战、Java学习路线等。

压测全称为压力测试,是确立系统稳定性的一种测试方法,一般在系统正常运做范围以外进行,以考察其功能极限和隐患。git

在开发接口或者功能点完成后,就须要对接口或功能点压力测试,测试出接口的极限以应对较大并发,举一个最直接的例子:淘宝双十一购物节,2018年淘宝交易建立峰值达到49.1万笔/秒,而在双十一以前淘宝都要对系统进行压测,看是否可以抗住每一年创新高的并发!github

大白话:不停地请求服务的接口,设置每秒的请求量以及持续时间,看看何时服务开始处理失败,从而得出服务的性能指标。面试

1、笔记目的

  • 简单认识压测(的目的)
  • 介绍压测平台应该有哪些能力

2、压测目的

  • 挖掘系统瓶颈点缓存

    • cpu计算能力
    • 业务代码(频繁full gc等)
    • DB
    • 线程模型
    • 带宽等
  • 创建性能基线并发

    • qps (request per second)
    • rt (response time)
    • 用于线上扩容策略配置等
  • 优化系统性能dom

    • 配置DB主从
    • jvm参数优化
    • 缓存改造
    • 线程模型改造等

3、压测平台应该具有的能力

1.压测场景

  • rpc场景(通常为压测单个服务的性能)jvm

    • 回放录制的流量
    • 自定义的流量
  • http场景(通常为全链路压测)性能

    • 回放录制的流量
    • 自定义的流量

2.数据

准备数据用于压测的时候使用学习

  • 录制任务测试

    • http请求的录制
    • rpc请求的录制

3.压测参数配置

  • 压测类型

    • 普通压测(普通循环播放流量)
    • 调试(单次流量播放,通常用于调试链路是否接通)
    • 递增(设置压测的多个阶段,每一个阶段配置不一样的qps以及持续时长)
  • 配置

    • 变量配置(单是流量录制是不够的,特殊的接口(好比关注行为)须要变化请求的参数,所以须要支持变量配置)

      • 自增变量

        • 设置起止值
        • 设置步长
      • 文件变量

        • 读取变量列
      • 时间变量

        • 对当前毫秒戳作加减操做
      • 计算变量

        • uuid
        • 区间random
      • 预约义变量(就是写死一个值)
    • 请求配置

      • 指定接口与方法/url
      • 指定机器
      • 超时时间
      • 变量

        • 指定配置好的变量
    • 压测配置

      • 初始qps
      • 指望最大qps
    • 词表配置

      • 循环回放流量录制中的流量
    • 资源隔离

      • DB隔离
      • 缓存隔离
      • MQ隔离
    • 静默期(那个时间段不能够进行压测)

4.保护策略

配置不一样的监控项以及异常的处理策略:好比中止压测或者下降压测流量等

  • db保护策略

    • 配置db的告警阈值

      • 告警以后自动下降指定的qps或者中止压测
  • 机器保护策略

    • 监控cpu gc 内存等等等等
    • 下降qps或者中止
  • 服务保护策略

    • 监测请求的响应状况
    • 下降qps或者中止

5.监控

配置不一样的监控项用于判断性能瓶颈

  • 客户端响应状况监控

    • qps
    • rt
    • 错误率
  • 服务端监控####

    • 业务日志
    • 机器

      • cpu
      • 线程池
      • 服务接口等待队列大小等

4、压测报告

  • 须要输出压测报告用于分析和记录

    • 各个监控项的指标
    • 压测结果的指标
    • 等等

今天为你们简单列举了一些压测的知识点,之后有时间再为你们详细介绍哦,欢迎一键三连!!!

相关文章
相关标签/搜索