开发者
资源
文档评分
获取效率
正确性
完整性
易理解
在线提单
论坛求助

执行测试

本节主要关注Istio的时延测试。以下操作均在“tools/perf/benchmark”目录的虚拟Python环境中运行。

  1. 进入虚拟Python环境。
    cd tools/perf/benchmark
    pipenv shell
  2. 执行测试。
    • 在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可为测试流程引入对应的模式测试。
  3. 导出测试结果。

    在进行多轮测试时,若使用的测试Pod没有被删除重建,一般只需要在所有测试完成后导出结果即可。但为了避免数据遗失,还是建议在每轮测试完成后导出测试数据。

    1. 设置端口转发以便获取结果。
      kubectl -n twopods-istio port-forward svc/fortioclient 9076:9076 &
    2. 获取测试结果并输出至主机,可修改--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"