添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

eas-benchmark是EAS平台内置的分布式通用压测工具,支持动态加压、实时查看压测秒级监控数据等,并在压测结束后生成汇总的图文报告。您可以通过该工具对使用EAS部署的服务创建压测任务并进行一键压测,从而了解EAS服务的使用性能。本文为您介绍如何创建压测任务并管理压测任务。

前提条件

已部署模型服务,详情请参见 服务部署:控制台

快速入门

您可以登录eascmd客户端后使用 bench 子命令来创建和管理压测任务( 创建压测任务 管理压测任务 ),如何登录eascmd客户端,请参见 下载并认证客户端

创建压测任务

通过EASCMD客户端创建压测任务

通过 bench create 命令创建压测任务。压测任务创建成功后,您可以根据返回的URL,查看压测的实时监控数据。命令格式如下所示。

eascmd bench create [bench_desc_json]

其中 bench_desc_json 表示压测任务相关信息的JSON文件,该文件的示例如下。

{
    "service": {
        "serviceName": "xgb_test"
    "data": {
        "content": "W1sxLDAsMCwwLDEsMSwwLDEsMCwxLDEsMCwwLDEsMCwxLDAsMSwwLDAsMSwxLDEsMCwxLDEsMCwwLDAsMSwxLDEsMCwxLDEsMSwxLDAsMSwxLDEsMCwxLDAsMCwwLDEsMSwwLDAsMCwxLDAsMSwwLDEsMCwwLDEsMCwwLDEsMCwxLDAsMCwxLDAsMCwwLDAsMSwwLDEsMCwxLDAsMCwxLDEsMSwwLDAsMSwwLDAsMCwwLDEsMSwxLDAsMSwxLDAsMCwxLDAsMSwwLDEsMSwxLDEsMCwxLDAsMCwxLDEsMSwxLDAsMCwwLDEsMSwwXV0K"
                

通过 path 指定多个OSS文件作为压测数据,配置示例如下。如需批量配置多条压测数据,可以直接将多个请求数据打包成zip包,通过 oss://XX.zip path 进行配置。

{
    "service": {
        "serviceName": "xgb_test"
    "data": {
        "path": "oss://examplebucket/test1.bin,oss://examplebucket/test2.bin"
                

该JSON文件内的参数解释,如下表所示。

表项

参数

是否必选

描述

service

serviceName

待压测服务的服务名称。

data

content

单条压测请求数据,Base64编码的字符串。

如果您需要配置多条请求数据,可通过 path 参数进行指定。关于压测数据如何构造及支持的文件类型,详情请参见 压测数据说明

path

测试数据源的路径,支持配置HTTP路径或OSS路径。可同时指定多条路径,通过半角逗号(,)分隔。同时支持通过.zip的形式,对多个压测文件进行批量打包配置。

说明

保存压测数据的文件按原始格式,不需要进行Base64编码。

multiLine

测试数据是否按行分割,Bool类型,默认为false。如果设置为true, 会将下载的数据逐行解析。

http

headers

http请求header设置,list类型,比如: ["Authorization:aaa", "Content-Type:text"]。

timeout

http请求延时(单位ms),默认为20000。

optional

mode

压测模式,支持以下三种模式:

  • auto(自动加压模式)

  • scan(周期加压模式)

  • manual(手动加压模式)

默认为auto自动模式。关于压测模式的更多详细内容,请参见 压测模式介绍

duration

压测时长(单位秒),默认为600,最大不超过1200。

agentCount

当压测模式选择manual模式时,配置该参数。

压测的客户端实例数量,实例数越多压力越大,默认为1。

concurrency

当压测模式选择manual模式时,配置该参数。

压测的每个客户端实例的并发数,并发越高压力越大,默认为2。当压力不够时先增加并发,如果增加并发无法提升压力时再尝试增加客户端实例数。

adjustInterval

当压测模式选择scan模式时,配置该参数。

自动加压的动态调整间隔(单位为s),默认为60。

minQPS

当压测模式选择scan模式时,配置该参数。

自动加压的起始QPS值,默认为100。

maxQPS

当压测模式选择scan模式或auto模式时,配置该参数。

允许到达的QPS上限值。

maxRT

当压测模式选择scan模式或auto模式时,配置该参数。

允许达到的RT(TP99)上限值,超过该阈值会自动调节QPS,直到实时RT符合预期。

qpsGrowthDelta

当压测模式选择scan模式时,配置该参数。

QPS每次增长的数值,默认为50。

faultTolerate

当压测模式选择scan模式或auto模式时,配置该参数。

对请求错误(非200状态码)的容忍程度。比如0.01,表示有1%的请求出现错误则触发错误处理流程。默认值为0.001,即对错误请求的容忍程度为千分之一。

faultAction

当压测模式选择scan模式或auto模式时,配置该参数。

在请求错误率超过 faultTolerate 设定的阈值时,压测控制器的行为,支持以下取值:

  • stop:维持当前QPS, 不再继续加压。

  • revise:动态调整QPS, 直到请求错误率符合预期。

默认为revise。

使用示例(假设描述压测任务相关信息的JSON文件为bench_xgb.json)

$ eascmd bench create bench_xgb.json

系统输出如下类似结果。

[RequestId]: DE240637-4976-59AF-A28C-BAA55C0A****
[OK] Task [benchmark-xgb-test-b514] is creating
[OK] [Agnet: 0/1]: Succeed to start benchmark master
[OK] [Agnet: 0/1]: Succeed to start benchmark master
[OK] [Agnet: 1/1]: Benchmark task is Running
[OK] Benchmark task is Running
[OK] Click the link http://127.0.0.1:18222/eas-benchmark/statsview to observe realtime visualization details, you can turn it off with CTRL+C.
Turning off will not interrupt the benchmark test task, and you can reopen it by the visualize command:
eascmd -c [config_file] bench visualize benchmark-xgb-test-b514

通过控制台创建压测任务

控制台创建的压测任务为auto(自动加压)模式,具体操作步骤如下。

  1. 进入 PAI-EAS 模型在线服务 页面。

    1. 登录 PAI控制台

    2. 在左侧导航栏单击 工作空间列表 ,在工作空间列表页面中单击待操作的工作空间名称,进入对应工作空间内。

    3. 在工作空间页面的左侧导航栏选择 模型部署 > 模型在线服务(EAS) ,进入 PAI-EAS 模型在线服务 页面。

  2. 按照下图操作指引,创建压测任务。

    image.png
  3. 添加压测任务 页面,配置以下参数,并单击 创建

    参数

    描述

    所属服务

    选择需要创建压测任务的服务名称。

    压测数据

    支持按照 单个数据 数据地址 OSS文件 本地上传 等方式配置压测数据。关于压测数据如何构造及支持的文件类型,详情请参见 压测数据说明

    说明

    其中 数据地址 OSS文件 支持同时配置多个文件地址,以半角逗号(,)分隔。

    文件内的数据是否需要按行分隔

    压测数据 选择 数据地址 OSS文件 本地上传 时,支持配置该参数。

    打开开关,表示上传的压测数据文件按行做分隔处理,以每行内容作为压测数据进行压测;否则以整个文件内容作为压测数据进行压测。

    压测时长(秒)

    默认为300秒。

    压测QPS上限

    允许到达的QPS(即每秒发送请求的速率)上限值,默认为10000。

    压测RT上限 (ms)

    允许达到的RT(即请求发出后系统响应时间)上限值,单位为毫秒。超过该阈值会自动调节QPS,直到实时RT符合预期。

管理压测任务

通过EASCMD客户端管理压测任务

  • 查看压测任务列表

    使用 bench list 命令查看当前用户创建的压测任务列表。命令格式如下所示。

    eascmd bench ls

    使用示例

    $ eascmd bench ls

    系统输出如下类似结果。

    [RequestId]: 7F953F8E-8897-5785-808A-CA64830215F6
    +-------------------------+--------------------------+-------------+----------------+---------+---------------------+
    |        TASKNAME         |          TASKID          |   REGION    | AVAILABLEAGENT | STATUS  |     CREATETIME      |
    +-------------------------+--------------------------+-------------+----------------+---------+---------------------+
    | benchmark-xgb-test-7846 | eas-b-ql470xog6qeh251fdb | cn-shanghai |              0 | Stopped | 2022-06-17 17:58:01 |
    | benchmark-xgb-test-b514 | eas-b-bdnzvwq0z0h3xqfk0s | cn-shanghai |              2 | Running | 2022-06-20 12:18:54 |
    +-------------------------+--------------------------+-------------+----------------+---------+---------------------+
  • 查看压测任务详情

    使用 bench desc 命令查看指定压测任务的详细信息。命令格式如下所示。

    eascmd bench desc [benchmark_task_name]

    其中 benchmark_task_name 表示压测任务名称。使用示例。

    $ eascmd bench desc benchmark-demo-test-c7eb

    系统输出如下类似结果。

    +----------------+------------------------------------------------------------------------------+
    |     TaskName   | benchmark-xgb-test-b514                                                      |
    |     TaskId     | eas-b-bdnzvwq0z0h3xq****                                                     |
    |    ServiceName | xgb_test                                                                     |
    |         Region | cn-shanghai                                                                  |
    |   DesiredAgent | 2                                                                            |
    | AvailableAgent | 2                                                                            |
    |         Status | Running                                                                      |
    |        Message | Benchmark task is running                                                    |
    |     CreateTime | 2021-10-20 12:38:35                                                          |
    |     UpdateTime | 2021-10-20 12:38:45                                                          |
    |         Config | {                                                                            |
    |                |   "base": {                                                                  |
    |                |     "agentCount": 2,                                                         |
    |                |     "concurrency": 40,                                                       |
    |                |     "duration": 1200,                                                        |
    |                |     "requestCount":                                                          |
    |                | 922337203685477****,                                                         |
    |                |   },                                                                         |
    |                |  ...                                                                         |
    |                | }                                                                            |
    +----------------+------------------------------------------------------------------------------+
  • 启动压测任务实时可视化

    使用 bench visualize 命令启动压测任务的实时可视化功能。该命令执行完成后会在本地127.0.0.1启动一个由webserver提供的实时监控页面的展示。命令格式如下所示。

    eascmd bench visualize [benchmark_task_name]

    使用示例。

    $ eascmd bench visualize benchmark-xgb-test-b514

    系统输出如下类似结果。

    [OK] Click the link http://127.0.0.1:18734/eas-benchmark/statsview to observe realtime visualization details, you can turn it off with CTRL+C.
    Turning off will not interrupt the benchmark test task, and you can reopen it by the visualize command:
    eascmd -c [config_file] bench visualize benchmark-xgb-test-b514

    使用浏览器打开链接 http://127.0.0.1:18734/eas-benchmark/statsview ,即可查看实时数据结果。

  • 获取压测报告

    当压测任务状态为Stopped状态时,表示压测任务结束。压测报告会保存到OSS中,您可以使用 bench report 命令获取压测任务报告。命令格式如下所示。

    eascmd  bench report [benchmark_task_name]

    使用示例。

    $ eascmd bench report benchmark-demo-test-c7eb

    系统输出如下类似结果。

    [OK] Benchmark task benchmark-demo-test-c7eb report url: http://eas-benchmark.oss-cn-chengdu.aliyuncs.com/summary/benchmark-demo-test-c7eb-10004.html

    使用浏览器打开 url 后的链接,即可查看压测报告结果,具体如下图所示。 image.png

  • 动态修改客户端实例数量和并发数

    当压测模式为manual时,需要使用 bench update 命令动态修改客户端实例数量和并发数。命令格式如下所示。

    eascmd bench update [benchmark_task_name] -Doptional.concurrency=<attr_value> -Doptional.agentCount=<attr_value>

    其中 <attr_value> 为具体取值。使用示例。

    $ eascmd bench update benchmark-demo-b99c -Doptional.concurrency=2 -Doptional.agentCount=1

    系统输出如下类似结果。

    [RequestId]: 9920C672-4D41-5CC4-8EC0-C690F76EB2BA
    [OK] Running [TaskName: benchmark-demo-b99c, DesiredAgent:1, AvailableAgent: 1, Message: Benchmark task is Updating]
    [OK] Benchmark task benchmark-demo-b99c was updated successfully
  • 停止压测任务

    使用 bench stop 命令停止当前正在运行的压测任务。命令格式如下所示。

    eascmd bench stop [benchmark_task_name]

    使用示例。

    $ eascmd bench stop benchmark-xgb-test-b514

    系统输出如下类似结果。

    Are you sure to stop the benchmark task [benchmark-xgb-test-b514] in [cn-shanghai]? [Y/n]
    [OK] Task [benchmark-xgb-test-b514] is stopping
    [OK] [Agnet: 0/1]: Benchmark task is Running
    [OK] [Agnet: 0/1]: Benchmark task is Stopped
    [OK] Benchmark task is stopped

    如果停止任务时,正在运行实时可视化功能。系统会在执行可视化命令的终端输出压测报告,您也可以通过 bench report 命令,获取更详细的html图文报告。

  • 启动压测任务

    使用 bench start 命令启动处于停止状态的压测任务。命令格式如下所示。

    eascmd bench start [benchmark_task_name]
    说明

    该命令与 bench create 命令的区别为,通过该命令重新启动压测任务后,会按照该任务最后一次更新的配置,重新启动新一轮的压测任务。

    使用示例。

    $ eascmd bench start benchmark-xgb-test-b514

    系统输出如下类似结果。

    Are you sure to start the benchmark task [benchmark-xgb-test-b514] in [cn-shanghai]? [Y/n]
    [OK] Task [benchmark-xgb-test-b514] is starting
    [OK] [Agnet: 0/1]: Succeed to start benchmark master
    [OK] [Agnet: 1/1]: Benchmark task is Running
    [OK] Benchmark task is Running
    [OK] Click the link http://127.0.0.1:18947/eas-benchmark/statsview to observe realtime visualization details, you can turn it off with CTRL+C.
    Turning off will not interrupt the benchmark test task, and you can reopen it by the visualize command:
    eascmd -c [config_file] bench visualize benchmark-xgb-test-b514
  • 删除压测任务

    压测任务运行结束后,控制器会根据压测任务结束的状态保留压测任务的记录,具体保留规则如下表所示。

    结束状态

    保留时间

    Stopped

    48小时。

    CreateFailed UpdateFailed Terminated Error

    10分钟。

    超过保留时间,系统会自动删除压测任务。

    您也可以使用 bench delete 命令,手动删除压测任务。命令格式如下所示。

    eascmd bench delete [benchmark_task_name]

    使用示例。

    $ eascmd bench delete benchmark-xgb-test-b514

    系统输出如下类似结果。

    Are you sure to delete the benchmark task [benchmark-xgb-test-b514] in [cn-shanghai]? [Y/n]
    [OK] Benchmark task benchmark-xgb-test-b514 is Deleting
    [OK] Benchmark task was deleted successfully

通过控制台管理压测任务

您可以在 一键压测 页签,查看已创建的压测任务列表,并管理压测任务。 压测任务

  • 支持一键启动、停止或删除压测任务。

  • 您需要单击右上角的刷新按钮,来刷新压测任务状态。

  • 当任务 状态 Running 时,您可以单击 操作 列下的 查看 ,来查看任务的实时监控数据。 实时监控数据

  • 当压测任务自动结束或手动停止压测任务后,即任务 状态 Stopped 时,您可以单击 操作 列下的 查看 ,来查看压测报告。 查看压测报告

压测数据说明

压测数据格式说明

服务的请求数据格式与模型的定义及Processor的实现有关。

  • 如果服务的请求数据为非结构化数据,例如语音、图片、文字等,则直接通过文件上传作为压测请求数据。

  • 如果服务的请求数据为结构化数据,例如请求必须为TFRequest,则需要通过EAS SDK来构造请求数据。您可以参考 模型服务预热 ,将生成的二进制数据通过文件上传作为压测请求数据。

压测数据文件类型

压测数据文件类型无特殊要求,与服务的业务类型有关,例如.txt、.jpg、.bin等格式均支持。

压测模式介绍

eas-benchmark支持auto、scan、manual三种压测模式,您可以在配置文件 optional 部分,添加 mode 参数,指定压测模式。

  • auto模式

    自动加压模式。eas-benchmark控制器会自动创建用于压测的Agent Worker,并设置合适的并发,通过自动寻优的算法来寻找服务的承压上限。该模式中,您只需在配置文件中指定服务名字和压测数据即可,其它参数均可使用默认值。具体配置示例,如下所示。

    {
        "service": {
            "serviceName": "demo"
        "data": {
            "path": "https://test-data.oss-cn-chengdu.aliyuncs.com/data/warmup.tf.bin"
        "optional" {
            "maxQPS": 1000,
            "duration": 300
    }
  • scan模式

    周期加压模式。根据您指定的起始QPS(minQPS),QPS上限(maxQPS),QPS增长时间间隔(adjustInterval),QPS增长步长(qpsGrowthDelta)等参数,动态加压,当服务承载到达指定的maxRT、maxQPS或服务压测出现错误数量超出容忍程度(faultTolerate)时为止。具体配置示例,如下所示。

    {
        "service": {
            "serviceName": "demo"
        "data": {
            "content": "aGVsbG8K"
        "optional": {
            "mode": "scan",
            "maxQPS": 1000,
            "minQPS": 500,
            "qpsGrowthDelta": 100,
            "adjustInterval": 30
    }
  • manual模式

    手动加压模式。固定压测Agent数量及每个Agent的并发数,您可以在压测过程中动态调整Agent数量及Agent并发数。具体配置示例,如下所示。

    {
        "service": {
            "serviceName": "demo"
        "data": {
            "content": "aGVsbG8K"
        "optional": {
            "mode": "manual",
            "agentCount": 1,
            "concurrency": 5