在日常开发中,开发人员或测试人员需要评估服务的性能是否符合预期,避免因功能迭代导致服务性能下降而引发故障。服务压测功能可以让您低成本地评估服务性能,做到1分钟创建压测场景,5分钟获取性能指标。
背景信息
在大促活动中,应该准备多少实例资源才能满足大促吞吐量的要求,降低因大促活动带来的访问量暴增进而引发系统宕机的风险。此时需要合理地评估服务性能,避免流量冲击引发的故障,并降低运营使用成本。
创建压测场景
- 登录MSE治理中心控制台。
- 在左侧导航栏选择。
- 在顶部菜单栏选择地域,然后单击创建场景。
- 在创建场景面板中设置场景配置和压力配置相关参数,然后单击确定。
场景配置页签相关参数说明如下。
参数 |
描述 |
场景名称 |
自定义压测场景名称,例如test-Istio。 |
应用 |
选择需要压测的应用。 |
框架类型 |
选择服务网格框架。
|
Path |
输入HTTP相对路径,例如/getIp。
|
基本信息 |
设置请求方式,包括GET/POST/PUT/DELETE。
说明 GET和DELETE只支持修改URL的Path路径。POST和PUT支持ContentType及参数编写格式。
|
请求头 |
设置请求头参数信息。关于多语言微服务支持的ContentType类型,请参见多语言参考示例。
|
参数模式 |
选择请求参数输入模式。
- 参数填写:填写参数内容。关于参数填写格式,请参见参数文件URL。
- 参数文件路径:填写参数文件地址。参数文件路径必须支持公网可访问。
- 参数文件上传:单击上传文件,选择参数文件进行上传。
|
超时时间 |
设置超时时长,单位:毫秒。 |
直连服务 |
开启后选择服务地址,可直接连接该服务。
|
打印日志 |
开启可自动打印日志信息,但会影响到服务压测性能,建议正常压测时关闭。 |
压力配置页签相关参数说明如下。
参数 |
描述 |
压测模式 |
压测模式有两种:并发模式(虚拟用户模式)、TPS模式(Transaction Per Second,吞吐量模式)。
- 并发模式:指虚拟并发用户数,从业务角度,也可以理解为同时在线的用户数。
- TPS模式:指系统每秒处理的事务数量。
|
流量模型 |
流量模型包括固定压力、阶梯压力和脉冲压力。
- 固定压力:以配置的固定并发值进行施压,并可设置预热时长。
- 阶梯压力:设置最大值、最小值、预热时间等信息,在预热递增期间,从最小值开始按照阶梯逐步递增,达到最大并发后按照最大并发持续施压。不可指定循环次数。
- 脉冲压力:设置峰值、谷值以及持续时间等信息,施压流量以峰值、峰谷的锯齿波的形式进行施压。
|
压测时长(分钟) |
指压测总时长,公测期间最大压测时长60分钟。 |
预热时长(分钟) |
施压前的预热时间,若设置为0,则表示无需预热。 |
执行结果
压测场景创建成功后,您可查看服务压测列表查看相关信息,包括平均TPS、平均响应时间、错误率等。
您可在压测场景详情页面选择重启、停止或编辑场景,也可执行删除等操作。
查看压测报告
- 登录MSE治理中心控制台。
- 在左侧导航栏选择。
- 在服务压测列表中单击操作列的详情,查看场景配置和运行记录。
- 在运行记录区域单击操作列的详情,查看实时性能数据。
说明 性能数据是每10秒的所有施压机数据统计,具体根据压测总时间长度会有所变化。单击图上方的图例,可以显示或隐藏某些数据曲线。
参数 |
说明 |
总请求数 |
整个压测过程中,共发起的请求个数。 |
平均TPS |
压测周期内,所有压力机发出的平均TPS值,TPS=调用总次数/总运行时间。 |
平均RT(ms) |
所有压力机发出平均响应时间。 |
最小RT(ms) |
所有压力机中最小的一次响应时间。 |
最大RT(ms) |
所有压力机中最大的一次响应时间。 |
错误请求数 |
所有压力机中错误请求数之和。 |
错误率(%) |
所有压力机中的平均错误率。 |
TP80(ms) |
所有压力机中80分位(P80)的平均值。 |
TP95(ms) |
所有压力机中95分位(P95)的平均值。 |
TP99(ms) |
所有压力机中99分位(P99)的平均值。 |
- 单击下载日志,可获取压测过程中的日志。
多语言参考示例
ContentType |
参数编写格式 |
application/x-www-form-urlencoded |
[{"name": "cart"},{"age": 20}] |
application/json(默认) |
{"name": "cart", "age": 20} |
参数文件URL:提供一个公网可下载的文件地址
平台会把该参数文件分发到每一个施压机,应用每一次调用参数就在该文件中按顺序读取一行。文件里面也支持动态函数参数。
参数文件填写格式如下:
- 方法参数类型:填写的内容是一个字符串类型的JSON数组,数组的每一位代表对应位置的参数类型。除了Java基本类型,其余类型需要填写完整的类路径。
- 方法参数:填写的内容是一个字符串类型的JSON数组,数组的每一位代表对应位置的参数。
参数编写格式 |
参数文件内容编写格式 |
application/x-www-form-urlencoded |
[{"name": "cart"},{"age": 20}]
[{"name": "cart"},{"age": 20}]
[{"name": "cart"},{"age": 20}]
|
application/json |
{"name": "cart", "age": 20}
{"name": "cart", "age": 20}
{"name": "cart", "age": 20}
|