性能测试PTS的Access Log压测功能,仅依赖网关日志,对服务端零侵入,通过PTS界面的简单配置,可以快速实现真实的网关流量回放。本文介绍如何使用Access Log压测功能。
方案概览
Access Log压测通过简单的配置即可实现网关真实流量回放,并且将压测请求参数化,自动创建压测场景,以及通过简单的登录接口配置即可解决登录态过期的问题。其配置主要分为四个模块:
配置日志生产者:您的访问日志可能来自于负载均衡ALB、CLB、MSE网关或者云服务器ECS中自建的WEB服务,首先需要将访问日志投递到日志服务SLS中。关于日志投递可以参考访问日志,配置CLB访问日志,开启网关日志投递,使用Nginx配置模式采集日志。
配置日志服务:用于接收日志生产者投递的日志。
配置Access Log压测:分析日志服务中存储的日志,获取待压接口并构造压测场景。
编辑PTS场景:待Access Log压测场景构造完成后,将跳转到PTS场景编辑页面,您可在此页面做进一步配置,也可以直接调试场景并启动压测。
日志规范
URL字段索引和值存在,且索引名在["request_uri", "path", "request_url", "url", "uri", "requestURI", "requestURL"]中。如果URL的路径和参数是分开记录的,参数字段值存在,且索引名在["method", "http_method", "request_method"]中。
如需回放POST请求,必须满足以下要求:
HTTP POST body字段索引和值存在,且索引名在["body", "http_body", "http_request_body", "request_body"]中。当前仅支持application/x-www-form-urlencoded, text/plain, application/json格式的body,不支持二进制数据body。
Content-Type字段索引和值存在,且索引名在["content_type", "contentType"]中,否则PTS将自动推断Content-Type。
若您使用MSE网关,可参考将完整的请求应答信息添加到访问日志,将POST请求的body打印到网关日志中。如此打印的POST请求,PTS会直接支持回放。
如使用简单模式,还需满足以下规范,不符合规范的日志会被忽略:
域名字段索引和值存在,且索引名在["host", "http_host", "authority"]中。
HTTP协议字段索引和值存在,且索引名在["http_protocol", "protocol", "scheme", "http_scheme"]中,且值为"http"或"https",否则将默认使用"http"。
1. 创建Access Log压测场景
开始之前,确保您已开通日志服务,创建Project、标准型Logstore并完成日志采集和开启索引。具体操作,请参见创建项目Project,创建Logstore,创建索引。
2. 选择压测模式
在创建Access Log 压测场景页面,打开简单回放模式开关并单击选择目标接口即可进入简单模式;关闭简单回放模式开关并单击选择目标接口即可进入标准模式。
简单模式直接回放日志记录的流量,不解析请求结构,不限制不同的域名和接口数量,但只能控制整个场景的RPS,并且不关心登录态。
标准模式能配置登录态,能分析各接口的请求数和MaxQPS分布,并能精确控制每个接口的压力值,但限制不同的域名和接口数量。
您可根据具体需求选择简单模式或标准模式做日志回放,对比如下:
压测模式 | 说明 |
简单模式 |
|
标准模式 |
|
简单模式
配置回放参数
简单模式分析结果展示所选时段内有效请求数,您可以进行以下参数的配置:
是否回放POST请求:开启开关后PTS将为您回放POST请求,但如果您的Request Body并未打到Access Log中, 回放POST请求将不带Body, 可能会出错,谨慎开启。
是否重复回放:若开启重复回放,回放到日志末尾时将会从头循环回放请求。 若关闭重复回放,回放到末尾时将停止发压,但未达到指定时长回放不会自动停止,请在请求发送完后手动停止回放避免更多VUM消耗。
回放时长(分钟):流量回放的持续时长,默认十分钟。
每秒请求数:配置流量回放的速率,PTS会以该速率回放您的Access Log流量,该数值会以平均原则分配到每个抽象接口上。
构造压测场景
单击构造压测场景,PTS会总结回放配置的结论,单击确认,将跳转到PTS场景编辑页面。您可在此页面进一步编辑生成的场景,也可以跳过(可选)3. 配置PTS场景直接启动压测。
标准模式
如果日志中包含请求域名,且字段名在["host", "http_host", "authority"]中,PTS将会自动补全host,同时你也可以自行修改。当前仅支持单host, 所有接口共享这个host。如果您需要回放多个域名,可以依次选择接口去创建场景,然后在压测场景中做进一步修改即可。
选择目标接口
PTS 展示所选的时间段从 access log 获知的频数和 QPS 维度下 TOP10 接口,可单击接口旁的灰色圆圈选择待压接口。已选的接口会展示在已选目标接口区域。
配置压测参数
如果待压接口无需登录,则打开目标接口无需登录开关;如果待压接口需要登录态信息,则需要配置登录接口信息,配置方法如下所示:
a. 从接口选择:如果查询出的接口中包括登录接口,可以选择此项。PTS会自动将该接口作为登录接口,使用日志中的参数,导出Cookie登录态使用,无需您手动配置。
b. 配置登录接口:如果展示出的接口没有登录的接口,您也可以手工配置。输入登录接口地址,如http://example.com/login。配置登录接口的body参数,如username、password。可以用${}引用参数,用到的参数请点击配置参数文件,更多信息,请参见数据源。
确认配置无误后,单击构造压测场景,将跳转至PTS场景编辑页面。您可在此页面进一步编辑生成的场景,也可以跳过(可选)3. 配置PTS场景直接启动压测。
(可选)3. 配置PTS场景
4. 启动压测
单击调试场景,对配置的场景进行调试,验证配置是否正确。具体操作,请参见调试场景。
单击保存去压测,在弹出的对话框中选择立即执行并单击启动压测,系统将跳转到压测中页面,您可在此页面查看各项性能指标。