eas-benchmark是EAS平台內建的分布式通用壓測工具,支援動態加壓、即時查看壓測秒級監控資料等,並在壓測結束後產生匯總的圖文報告。您可以通過該工具對使用EAS部署的服務建立壓測任務並進行一鍵壓測,從而瞭解EAS服務的使用效能。本文為您介紹如何建立和管理壓測任務。
前提條件
已部署模型服務,詳情請參見服務部署:控制台。
快速入門
建立壓測任務
通過EASCMD用戶端建立壓測任務
通過bench create
命令建立壓測任務。壓測任務建立成功後,您可以根據返回的URL,查看壓測的即時監控資料。以Windows 64版本為例,命令格式如下所示。
eascmdwin64.exe 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類型。例如: |
timeout | 否 | http請求延時(單位ms),預設為20000。 | |
optional | mode | 否 | 壓測模式,支援以下三種模式:
關於壓測模式的更多詳細內容,請參見壓測模式介紹。 |
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設定的閾值時,壓測控制器的行為,支援以下取值:
|
使用樣本如下(假設描述壓測任務相關資訊的JSON檔案為bench_xgb.json):
eascmdwin64.exe 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(自動加壓)模式,具體操作步驟如下。
登入PAI控制台,在頁面上方選擇目標地區,並在右側選擇目標工作空間,然後單擊進入EAS。
切換到壓測任務頁簽,單擊添加壓測任務。
在添加壓測任務頁面,配置以下參數後,單擊建立。
參數
描述
所屬服務
選擇需要建立壓測任務的服務名稱。
壓測資料
支援按照單個資料、資料地址、OSS檔案和本地上傳等方式配置壓測資料。關於壓測資料如何構造及支援的檔案類型,詳情請參見壓測資料說明。
說明其中資料地址和OSS檔案支援同時配置多個檔案地址,以半形逗號(,)分隔。
檔案內的資料是否需要按行分隔
當壓測資料選擇資料地址、OSS檔案或本地上傳時,支援配置該參數。
開啟開關,表示上傳的壓測資料檔案按行做分隔處理,以每行內容作為壓測資料進行壓測。否則以整個檔案內容作為壓測資料進行壓測。
壓測時間長度(秒)
預設為300秒。
壓測QPS上限
允許到達的QPS(即每秒發送請求的速率)上限值,預設為10000。
壓測RT上限 (ms)
允許達到的RT(即請求發出後系統回應時間)上限值,單位為毫秒。超過該閾值會自動調節QPS,直到即時RT符合預期。
管理壓測任務
通過EASCMD用戶端管理壓測任務
查看壓測工作清單
使用
bench list
命令查看目前使用者建立的壓測工作清單。以Windows64 版本為例,命令格式如下所示。eascmdwin64.exe bench ls
使用樣本如下:
eascmdwin64.exe bench ls
系統輸出如下類似結果。
[RequestId]: 7F953F8E-8897-5785-808A-CA64830215F6 +-------------------------+--------------------------+-------------+----------------+---------+---------------------+ | TASKNAME | TASKID | REGION | AVAILABLEAGENT | STATUS | CREATETIME | +-------------------------+--------------------------+-------------+----------------+---------+---------------------+ | benchmark-xgb-test-7846 | eas-b-ql470xog6qeh25**** | cn-shanghai | 0 | Stopped | 2022-06-17 17:58:01 | | benchmark-xgb-test-b514 | 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表示壓測任務名稱。使用樣本如下:
eascmdwin64.exe 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提供的即時監控頁面的展示。以Windows64 版本為例,命令格式如下所示。eascmdwin64.exe bench visualize [benchmark_task_name]
使用樣本如下。
eascmdwin64.exe 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
命令擷取壓測任務報告。以Windows64 版本為例,命令格式如下所示。eascmdwin64.exe bench report [benchmark_task_name]
使用樣本如下。
eascmdwin64.exe 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後的連結,即可查看壓測報告結果,具體如下圖所示。
動態修改用戶端執行個體數量和並發數
當壓測模式為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]
使用樣本如下:
eascmdwin64.exe 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
命令啟動處於停止狀態的壓測任務。以Windows64 版本為例,命令格式如下所示。eascmdwin64.exe bench start [benchmark_task_name]
說明該命令與
bench create
命令的區別為,通過該命令重新啟動壓測任務後,會按照該任務最後一次更新的配置,重新啟動新一輪的壓測任務。使用樣本如下:
eascmdwin64.exe 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
命令,手動刪除壓測任務。命令格式如下所示。eascmdwin64.exe bench delete [benchmark_task_name]
使用樣本如下:
eascmdwin64.exe 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://examplebucket.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 } }
API使用說明
您可以通過調用API的方式,來建立和管理壓測任務。具體調用方法和詳情介紹,請參見壓測任務。
相關文檔
在確認服務效能滿足要求後,您即可使用該服務進行模型推理。具體操作,請參見調用方式概覽。