大厂实践篇:初识压测

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


在开发接口或者功能点完成后,就需要对接口或功能点压力测试,测试出接口的极限以应对较大并发,举一个最直接的例子:淘宝双十一购物节,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保护策略

    • 告警之后自动降低指定的qps或者停止压测

    • 配置db的告警阈值

  • 机器保护策略

    • 监控cpu gc 内存等等等等

    • 降低qps或者停止

  • 服务保护策略

    • 监测请求的响应情况

    • 降低qps或者停止

5.监控(配置不同的监控项用于判断性能瓶颈)

  • 客户端响应情况监控

    • qps

    • rt

    • 错误率

  • 服务端监控

    • cpu

    • 线程池

    • 服务接口等待队列大小等

    • 业务日志

    • 机器

三、压测报告

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

    • 各个监控项的指标

    • 压测结果的指标

    • 等等


今天大家简单介绍了一些关于压测的知识点,这些都是在实际项目生命周期中需要用到的知识点,文章开头已经讲过压测的重要性,希望大家能有所了解并掌握!


欢迎大家评论区交流

本文分享自微信公众号 - 猪哥Java(pig-python)。
如有侵权,请联系 [email protected] 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章