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設定的閾值時,壓測控制器的行為,支援以下取值:
|
常見問題
Q:單條壓測時返回 400 或 404 錯誤,但單次 curl 請求正常
問題現象:在使用單個資料對 EAS 部署的大模型推理服務進行一鍵壓測時,所有請求均失敗,返回 HTTP 狀態代碼 400 或 404;而通過手動 curl 發送相同請求卻能成功返回 200。
根本原因:
404 錯誤:壓測請求的 URL 路徑不對。比如末尾包含多餘的斜杠(如
/test/),而服務實際註冊的路徑為/test,導致路由不匹配。400 錯誤:在產生請求體的 base64 編碼時,未將 JSON 字串用單引號包裹(如
echo -n {"file_names": [...]} | base64),導致 shell 解析錯誤,實際傳入的 JSON 格式無效,服務無法解析。
解決方案:
確保壓測 URL 路徑與服務註冊路徑完全一致,移除末尾多餘的斜杠(應使用
/test而非/test/)。在產生 base64 編碼前,將完整的 JSON 請求體用單引號包裹,例如:
echo -n '{"file_names": ["xxx.pdf"]}' | base64
