计算 iteration_duration 的权宜之计
一个常见的需求是跟踪 iteration_duration
指标,但不包含 setup
和 teardown
函数所花费的时间。此功能尚不可用,但可以使用基于 iteration_duration
或任何现有指标的阈值作为权宜之计。
其基于为所需范围的标签创建子指标阈值,并设置始终通过的条件这一概念。它适用于任何已启用且已与阈值一起使用的标签,例如
iteration_duration{scenario:default}
生成一个子指标,仅收集默认场景迭代的样本。使用scenario:default
是因为在我们没有显式指定options.scenarios
而仅使用执行快捷方式时,它是内部 k6 场景名称。iteration_duration{group:::setup}
或iteration_duration{group:::teardown}
创建子指标,仅收集setup
和teardown
的时长。k6 会隐式为setup
和teardown
创建分组,而::
是分组分隔符。http_req_duration{scenario:default}
也可以用于隔离执行的长时间运行请求。
import { sleep } from 'k6';
import http from 'k6/http';
export const options = {
vus: 1,
iterations: 1,
thresholds: {
'iteration_duration{scenario:default}': [`max>=0`],
'iteration_duration{group:::setup}': [`max>=0`],
'iteration_duration{group:::teardown}': [`max>=0`],
'http_req_duration{scenario:default}': [`max>=0`],
},
};
export function setup() {
http.get('https://quickpizza.grafana.com/api/delay/5');
}
export default function () {
http.get('http://test.k6.io/?where=default');
sleep(0.5);
}
export function teardown() {
http.get('https://quickpizza.grafana.com/api/delay/3');
sleep(5);
}
已生成专用子指标,仅收集由阈值定义的范围内的样本
█ THRESHOLDS
http_req_duration{scenario:default}
✓ 'max>=0' max=117.34ms
iteration_duration{group:::setup}
✓ 'max>=0' max=0s
iteration_duration{group:::teardown}
✓ 'max>=0' max=0s
iteration_duration{scenario:default}
✓ 'max>=0' max=1.13s