EAS提供了针对LLM服务和通用场景服务的压测方法,帮助您轻松创建压测任务并进行一键压测,全面了解EAS服务的性能表现。本文为您介绍如何创建和管理压测任务。
一、进入添加压测任务页面
登录PAI控制台,在页面上方选择目标地域,并在右侧选择目标工作空间,然后单击进入EAS。
切换到压测任务页签,单击添加压测任务。
二、创建压测任务
LLM服务压测
如果您的EAS服务是LLM服务,强烈建议勾选LLM服务,这样能够获取LLM场景定制化的压测报告。
LLM服务压测目前仅支持控制台方式创建任务,不支持EASCMD客户端。
LLM服务压测只支持OpenAI的/v1/completions
和/v1/chat/completions
两个接口。因此,只有使用兼容OpenAI API接口的推理引擎(如vLLM、SGLang、LMDeploy、BladeLLM)部署的EAS服务,才能使用LLM服务压测功能。
在添加压测任务页面,配置以下参数。参数配置完成后,单击确定。
通用场景服务压测
通用场景服务压测支持以下3种模式:
auto模式:自动加压模式。eas-benchmark控制器会自动创建用于压测的Agent Worker,并设置合适的并发,通过自动寻优的算法来寻找服务的承压上限。
scan模式:周期加压模式。根据您指定的起始QPS(minQPS),QPS上限(maxQPS),QPS增长时间间隔(adjustInterval),QPS增长步长(qpsGrowthDelta)等参数,动态加压,当服务承载到达指定的maxRT、maxQPS或服务压测出现错误数量超出容忍程度(faultTolerate)时为止。
manual模式:手动加压模式。固定压测Agent数量及每个Agent的并发数,您可以在压测过程中动态调整Agent数量及Agent并发数。
控制台仅支持auto模式,EASCMD客户端支持auto、scan、manual三种压测模式。使用方式如下:
通过控制台
压测控制台限制了压测请求的超时时间为20秒。如果压测报告中出现512返回码,大概率是由于请求等待超时所致。目前,EAS压测控制台暂不支持自定义配置超时时间。
在添加压测任务页面,配置以下参数。参数配置完成后,单击确定。
参数 | 描述 | |
基本信息 | 所属服务 | 选择需要进行压测的服务名称。 |
压测地址 | 表示服务调用地址。 | |
压测配置 | 数据来源 | 支持按照单个数据、数据地址、OSS文件和本地上传方式配置压测数据。关于压测数据如何构造及支持的文件类型,详情请参见附录1:压测数据说明。 说明
|
文件内的数据按行分割 | 当数据来源选择数据地址、OSS文件或本地上传时,支持配置该参数。 打开开关,表示上传的压测文件将按行做分隔处理,以每行内容作为压测数据进行压测。否则以整个文件内容作为压测数据进行压测。 | |
压测时长上限(秒) | 表示压测持续时间,单位为秒。默认为300秒。 | |
压测QPS上限 | 允许到达的QPS(即每秒发送请求的速率)上限值,默认为10000。 | |
压测RT上限(ms) | 允许达到的响应时间(RT)上限值,单位为毫秒。超过该阈值会自动调节QPS,直到实时RT符合预期。 | |
HTTP Header | 请求头配置,格式为键值对。例如:
|
通过EASCMD客户端
通过bench create
命令创建压测任务(如何登录EASCMD客户端,请参见下载并认证客户端。)。成功后,您可以通过返回的URL,查看实时监控数据。以Windows 64版本为例,命令格式如下所示。
eascmdwin64.exe bench create [bench_desc_json]
其中bench_desc_json表示压测任务相关信息的JSON文件。示例如下:
JSON参数解释请参见附录3:压测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
三、查看压测详情
查看实时监控数据
当压测任务状态为运行中时,单击任务名称,查看实时监控数据。
查看压测报告
当压测任务状态为已完成时,单击任务名称查看压测报告。
压测报告包含压测任务基本信息、压测配置、压测结果及压测任务监控等内容。其中压测任务监控指标说明如下:
仅LLM服务支持展示的监控指标
TTFT(Time To First Token)
请求首包延时。表示从发送请求到接收到服务生成的第一个Token的时间。
TPOT(Time per Output Token)
请求的每包延时。表示服务生成的相邻两个Token的时间间隔。
TPS(Token Per Second)
表示每秒传输的Token数量。
所有服务都支持展示的监控指标
每秒请求数分布
表示服务每秒接收到的请求数量的分布情况。
响应时间分布
表示服务在选定时间范围内返回的响应数量的分布情况。
传输流量分布
表示在选定时间范围内,客户端发送到服务的请求数据量和服务返回给客户端的响应数据量分布情况。
响应时间区间分布
表示服务返回的响应时间的区间占比,单位为毫秒。
响应时间整体分布
表示不同分位数下,请求的端到端延时,单位为毫秒。
返回状态码分布
表示服务返回状态码的分布情况。
四、管理压测任务
通过控制台管理压测任务
您可以在压测任务页签中查看已创建的压测任务列表,并支持启动、克隆、复制报告和删除。
通过EASCMD客户端管理压测任务
查看压测任务列表
使用
bench list
命令查看当前用户创建的压测任务列表。以Windows64 版本为例,命令格式如下所示。eascmdwin64.exe bench ls
系统输出示例如下。
[RequestId]: 7F953F8E-8897-5785-808A-CA648302**** +-------------------------+--------------------------+-------------+----------------+---------+---------------------+ | TASKNAME | TASKID | REGION | AVAILABLEAGENT | STATUS | CREATETIME | +-------------------------+--------------------------+-------------+----------------+---------+---------------------+ | benchmark-***-test-**** | eas-b-ql470xog6qeh25**** | cn-shanghai | 0 | Stopped | 2022-06-17 17:58:01 | | benchmark-***-test-**** | eas-b-bdnzvwq0z0h3xq**** | cn-shanghai | 2 | Running | 2022-06-20 12:18:54 | +-------------------------+--------------------------+-------------+----------------+---------+---------------------+
查看压测任务详情
使用
bench desc
命令查看指定压测任务的详细信息。以Windows64 版本为例,命令格式如下所示。eascmdwin64.exe bench desc [benchmark_task_name]
其中[benchmark_task_name]需替换为压测任务名称。
系统输出示例如下。
+----------------+------------------------------------------------------------------------------+ | TaskName | benchmark-***-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提供的实时监控页面的展示。以Windows64 版本为例,命令格式如下所示。eascmdwin64.exe bench visualize [benchmark_task_name]
其中[benchmark_task_name]需替换为压测任务名称。
系统输出示例如下。
[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
命令获取压测任务报告。以Windows64 版本为例,命令格式如下所示。eascmdwin64.exe bench report [benchmark_task_name]
其中[benchmark_task_name]需替换为压测任务名称。
系统输出示例如下。
[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后的链接,即可查看压测报告结果,具体如下图所示。
动态修改客户端实例数量和并发数
当压测模式为manual时,需要使用
bench update
命令动态修改客户端实例数量和并发数。以Windows64 版本为例,命令格式如下所示。eascmdwin64.exe bench update [benchmark_task_name] -Doptional.concurrency=<attr_value> -Doptional.agentCount=<attr_value>
其中<attr_value>为具体取值。使用示例如下:
eascmdwin64.exe 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
命令停止当前正在运行的压测任务。以Windows64 版本为例,命令格式如下所示。eascmdwin64.exe bench stop [benchmark_task_name]
其中[benchmark_task_name]需替换为压测任务名称。
系统输出示例如下。
Are you sure to stop the benchmark task [benchmark-***-test-b514] in [cn-shanghai]? [Y/n] [OK] Task [benchmark-***-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
命令启动处于停止状态的压测任务。以Windows64 版本为例,命令格式如下所示。eascmdwin64.exe bench start [benchmark_task_name]
说明该命令与
bench create
命令的区别为,通过该命令重新启动压测任务后,会按照该任务最后一次更新的配置,重新启动新一轮的压测任务。其中[benchmark_task_name]需替换为压测任务名称。
系统输出示例如下。
Are you sure to start the benchmark task [benchmark-***-test-b514] in [cn-shanghai]? [Y/n] [OK] Task [benchmark-***-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
命令,手动删除压测任务。命令格式如下所示。eascmdwin64.exe bench delete [benchmark_task_name]
其中[benchmark_task_name]需替换为压测任务名称。
系统输出示例如下。
Are you sure to delete the benchmark task [benchmark-***-test-b514] in [cn-shanghai]? [Y/n] [OK] Benchmark task benchmark-***-test-b514 is Deleting [OK] Benchmark task was deleted successfully
附录1:压测数据说明
压测数据格式说明
服务的请求数据格式与模型的定义及Processor的实现有关,分为以下两种情况:
如果是非结构化数据(如语音、图片、文字等),直接通过文件上传作为压测请求数据。
如果是结构化数据(如TFRequest),需要通过EAS SDK构造请求数据(参考模型服务预热),并将生成的二进制数据通过文件上传。
压测数据文件类型
支持的文件类型包括.txt
、.jpg
、.bin
、.zip
等,具体取决于服务的业务需求。
附录2:压测配置示例
使用EASCMD客户端对通用场景服务创建压测任务时,支持auto、scan、manual三种压测模式。
您可以在配置文件optional部分,添加mode参数,指定压测模式。配置示例如下。
auto模式
auto模式中,您只需在配置文件中指定服务名字和压测数据即可,其它参数均可使用默认值。具体配置示例,如下所示。
{
"service": {
"serviceName": "demo"
},
"data": {
"path": "https://examplebucket.oss-cn-chengdu.aliyuncs.com/data/warmup.tf.bin"
},
"optional": {
"maxQPS": 1000,
"duration": 300
}
}
scan模式
{
"service": {
"serviceName": "demo"
},
"data": {
"content": "aGVsbG8K"
},
"optional": {
"mode": "scan",
"maxQPS": 1000,
"minQPS": 500,
"qpsGrowthDelta": 100,
"adjustInterval": 30
}
}
manual模式
{
"service": {
"serviceName": "demo"
},
"data": {
"content": "aGVsbG8K"
},
"optional": {
"mode": "manual",
"agentCount": 1,
"concurrency": 5
}
}
附录3:压测JSON配置参数说明
表项 | 参数 | 是否必选 | 描述 |
service | serviceName | 是 | 待压测服务的服务名称。 |
data | content | 否 | 单条压测请求数据,Base64编码的字符串。 如果您需要配置多条请求数据,可通过path参数进行指定。关于压测数据如何构造及支持的文件类型,详情请参见附录1:压测数据说明。 |
path | 否 | 测试数据源的路径,支持配置HTTP路径或OSS路径。可同时指定多条路径,通过半角逗号(,)分隔。同时支持通过.zip的形式,对多个压测文件进行批量打包配置。 说明 保存压测数据的文件按原始格式,不需要进行Base64编码。 | |
multiLine | 否 | 测试数据是否按行分割,Bool类型,默认为false。如果设置为true,会将下载的数据逐行解析。 | |
http | headers | 否 | http请求header设置,list类型。例如: |
timeout | 否 | http请求延时(单位为毫秒),默认为20000。 | |
optional | mode | 否 | 压测模式,支持以下三种模式:
|
duration | 否 | 压测时长(单位秒),默认为600,最大不超过1200。 | |
agentCount | 否 | manual模式下的客户端实例数量,实例数越多压力越大,默认为1。 | |
concurrency | 否 | manual模式下的每个客户端实例的并发数,并发越高压力越大,默认为2。当压力不够时先增加并发,如果增加并发无法提升压力时再尝试增加客户端实例数。 | |
adjustInterval | 否 | scan模式下自动加压的动态调整间隔(单位为秒),默认为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设定的阈值时,压测控制器的行为,支持以下取值:
|