乐趣区

关于java:互联网大厂必学技能压力测试

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

压测全称为压力测试,是确立零碎稳定性的一种测试方法,通常在零碎失常运作范畴之外进行,以考查其性能极限和隐患。

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

大白话:不停地申请服务的接口,设置每秒的申请量以及持续时间,看看什么时候服务开始解决失败,从而得出服务的性能指标。

一、笔记目标

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

二、压测目标

  • 开掘零碎瓶颈点

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

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

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

三、压测平台应该具备的能力

1. 压测场景

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

    • 回放录制的流量
    • 自定义的流量
  • 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
      • 线程池
      • 服务接口期待队列大小等

四、压测报告

  • 须要输入压测报告用于剖析和记录

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

明天为大家简略列举了一些压测的知识点,当前有工夫再为大家具体介绍哦,欢送一键三连!!!

退出移动版