执行测试
本节主要关注Istio的时延测试。以下操作均在“tools/perf/benchmark”目录的虚拟Python环境中运行。
- 进入虚拟Python环境。
cd tools/perf/benchmark pipenv shell
- 执行测试。
- 在pipenv shell中,可用的python可执行文件名可能为python3、python3.xx等,此时需要将下述测试命令的python替换为对应可执行文件名。
- 下述测试命令仅按配置文件的要求运行一轮测试,为了避免数据波动的影响,可连续运行多次测试命令,对最终结果求取均值。
下载的测试工具中包含了Benchmark测试脚本runner.py,所处位置位于“tools/perf/benchmark/runner/runner.py”,可通过提供命令行参数或配置文件进行测试。本文直接以测试工具中提供的配置文件进行测试:
python runner/runner.py --config_file ./configs/istio/telemetryv2_stats/latency.yaml
测试成功执行截图示例如下图,其中红框中的文字说明程序正在运行both sidecar模式测试。

配置文件“./configs/istio/telemetryv2_stats/latency.yaml”主要参数解释如下。
- conn:连接并发数。
- qps:所有连接每秒总的查询数。
- duration:每个子测试运行的时间(单位:秒),应大于92。
- run_bothsidecar:是否运行both sidecar模式测试,默认值:true。
- run_serversidecar:是否进行server-only sidecar模式测试,默认值false,将其修改为true可为测试流程引入对应的模式测试。
- run_clientsidecar:是否进行client-only sidecar模式测试,默认值false,将其修改为true可为测试流程引入对应的模式测试。
- run_no_istio:是否进行无sidecar模式测试,默认值false,将其修改为true可为测试流程引入对应的模式测试。
- 导出测试结果。
在进行多轮测试时,若使用的测试Pod没有被删除重建,一般只需要在所有测试完成后导出结果即可。但为了避免数据遗失,还是建议在每轮测试完成后导出测试数据。
- 设置端口转发以便获取结果。
kubectl -n twopods-istio port-forward svc/fortioclient 9076:9076 &
- 获取测试结果并输出至主机,可修改--csv_output后的参数更改结果输出路径。
python ./runner/fortio.py http://localhost:9076 --prometheus=$PROMETHEUS_URL --csv StartTime,ActualDuration,Labels,NumThreads,ActualQPS,p50,p90,p99,p999 --csv_output "./istio-result.csv"
- 设置端口转发以便获取结果。
父主题: Benchmark测试