服務(wù)自動壓測
eas-benchmark是EAS平臺內(nèi)置的分布式通用壓測工具,支持動態(tài)加壓、實時查看壓測秒級監(jiān)控數(shù)據(jù)等,并在壓測結(jié)束后生成匯總的圖文報告。您可以通過該工具對使用EAS部署的服務(wù)創(chuàng)建壓測任務(wù)并進行一鍵壓測,從而了解EAS服務(wù)的使用性能。本文為您介紹如何創(chuàng)建和管理壓測任務(wù)。
前提條件
已部署模型服務(wù),詳情請參見服務(wù)部署:控制臺。
快速入門
您可以登錄eascmd客戶端后使用bench
子命令來創(chuàng)建和管理壓測任務(wù)(創(chuàng)建壓測任務(wù)、管理壓測任務(wù)),如何登錄eascmd客戶端,請參見下載并認證客戶端。您可以參考如下視頻,快速了解服務(wù)自動壓測功能的使用方法。
創(chuàng)建壓測任務(wù)
通過EASCMD客戶端創(chuàng)建壓測任務(wù)
通過bench create
命令創(chuàng)建壓測任務(wù)。壓測任務(wù)創(chuàng)建成功后,您可以根據(jù)返回的URL,查看壓測的實時監(jiān)控數(shù)據(jù)。以Windows 64版本為例,命令格式如下所示。
eascmdwin64.exe bench create [bench_desc_json]
其中bench_desc_json表示壓測任務(wù)相關(guān)信息的JSON文件,該文件的示例如下。
{
"service": {
"serviceName": "xgb_test"
},
"data": {
"content": "W1sxLDAsMCwwLDEsMSwwLDEsMCwxLDEsMCwwLDEsMCwxLDAsMSwwLDAsMSwxLDEsMCwxLDEsMCwwLDAsMSwxLDEsMCwxLDEsMSwxLDAsMSwxLDEsMCwxLDAsMCwwLDEsMSwwLDAsMCwxLDAsMSwwLDEsMCwwLDEsMCwwLDEsMCwxLDAsMCwxLDAsMCwwLDAsMSwwLDEsMCwxLDAsMCwxLDEsMSwwLDAsMSwwLDAsMCwwLDEsMSwxLDAsMSwxLDAsMCwxLDAsMSwwLDEsMSwxLDEsMCwxLDAsMCwxLDEsMSwxLDAsMCwwLDEsMSwwXV0K"
}
}
通過path指定多個OSS文件作為壓測數(shù)據(jù),配置示例如下。如需批量配置多條壓測數(shù)據(jù),可以直接將多個請求數(shù)據(jù)打包成zip包,通過oss://XX.zip對path進行配置。
{
"service": {
"serviceName": "xgb_test"
},
"data": {
"path": "oss://examplebucket/test1.bin,oss://examplebucket/test2.bin"
}
}
該JSON文件內(nèi)的參數(shù)解釋,如下表所示。
表項 | 參數(shù) | 是否必選 | 描述 |
service | serviceName | 是 | 待壓測服務(wù)的服務(wù)名稱。 |
data | content | 否 | 單條壓測請求數(shù)據(jù),Base64編碼的字符串。 如果您需要配置多條請求數(shù)據(jù),可通過path參數(shù)進行指定。關(guān)于壓測數(shù)據(jù)如何構(gòu)造及支持的文件類型,詳情請參見壓測數(shù)據(jù)說明。 |
path | 否 | 測試數(shù)據(jù)源的路徑,支持配置HTTP路徑或OSS路徑。可同時指定多條路徑,通過半角逗號(,)分隔。同時支持通過.zip的形式,對多個壓測文件進行批量打包配置。 說明 保存壓測數(shù)據(jù)的文件按原始格式,不需要進行Base64編碼。 | |
multiLine | 否 | 測試數(shù)據(jù)是否按行分割,Bool類型,默認為false。如果設(shè)置為true,會將下載的數(shù)據(jù)逐行解析。 | |
http | headers | 否 | http請求header設(shè)置,list類型。例如: |
timeout | 否 | http請求延時(單位ms),默認為20000。 | |
optional | mode | 否 | 壓測模式,支持以下三種模式:
關(guān)于壓測模式的更多詳細內(nèi)容,請參見壓測模式介紹。 |
duration | 否 | 壓測時長(單位秒),默認為600,最大不超過1200。 | |
agentCount | 否 | 當(dāng)壓測模式選擇manual模式時,配置該參數(shù)。 壓測的客戶端實例數(shù)量,實例數(shù)越多壓力越大,默認為1。 | |
concurrency | 否 | 當(dāng)壓測模式選擇manual模式時,配置該參數(shù)。 壓測的每個客戶端實例的并發(fā)數(shù),并發(fā)越高壓力越大,默認為2。當(dāng)壓力不夠時先增加并發(fā),如果增加并發(fā)無法提升壓力時再嘗試增加客戶端實例數(shù)。 | |
adjustInterval | 否 | 當(dāng)壓測模式選擇scan模式時,配置該參數(shù)。 自動加壓的動態(tài)調(diào)整間隔(單位為s),默認為60。 | |
minQPS | 否 | 當(dāng)壓測模式選擇scan模式時,配置該參數(shù)。 自動加壓的起始QPS值,默認為100。 | |
maxQPS | 否 | 當(dāng)壓測模式選擇scan模式或auto模式時,配置該參數(shù)。 允許到達的QPS上限值。 | |
maxRT | 否 | 當(dāng)壓測模式選擇scan模式或auto模式時,配置該參數(shù)。 允許達到的RT(TP99)上限值,超過該閾值會自動調(diào)節(jié)QPS,直到實時RT符合預(yù)期。 | |
qpsGrowthDelta | 否 | 當(dāng)壓測模式選擇scan模式時,配置該參數(shù)。 QPS每次增長的數(shù)值,默認為50。 | |
faultTolerate | 否 | 當(dāng)壓測模式選擇scan模式或auto模式時,配置該參數(shù)。 對請求錯誤(非200狀態(tài)碼)的容忍程度。比如0.01,表示有1%的請求出現(xiàn)錯誤則觸發(fā)錯誤處理流程。默認值為0.001,即對錯誤請求的容忍程度為千分之一。 | |
faultAction | 否 | 當(dāng)壓測模式選擇scan模式或auto模式時,配置該參數(shù)。 在請求錯誤率超過faultTolerate設(shè)定的閾值時,壓測控制器的行為,支持以下取值:
|
使用示例如下(假設(shè)描述壓測任務(wù)相關(guān)信息的JSON文件為bench_xgb.json):
eascmdwin64.exe bench create bench_xgb.json
系統(tǒng)輸出如下類似結(jié)果。
[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
通過控制臺創(chuàng)建壓測任務(wù)
控制臺創(chuàng)建的壓測任務(wù)為auto(自動加壓)模式,具體操作步驟如下。
登錄PAI控制臺,在頁面上方選擇目標地域,并在右側(cè)選擇目標工作空間,然后單擊進入EAS。
切換到壓測任務(wù)頁簽,單擊添加壓測任務(wù)。
在添加壓測任務(wù)頁面,配置以下參數(shù)后,單擊創(chuàng)建。
參數(shù)
描述
所屬服務(wù)
選擇需要創(chuàng)建壓測任務(wù)的服務(wù)名稱。
壓測數(shù)據(jù)
支持按照單個數(shù)據(jù)、數(shù)據(jù)地址、OSS文件和本地上傳等方式配置壓測數(shù)據(jù)。關(guān)于壓測數(shù)據(jù)如何構(gòu)造及支持的文件類型,詳情請參見壓測數(shù)據(jù)說明。
說明其中數(shù)據(jù)地址和OSS文件支持同時配置多個文件地址,以半角逗號(,)分隔。
文件內(nèi)的數(shù)據(jù)是否需要按行分隔
當(dāng)壓測數(shù)據(jù)選擇數(shù)據(jù)地址、OSS文件或本地上傳時,支持配置該參數(shù)。
打開開關(guān),表示上傳的壓測數(shù)據(jù)文件按行做分隔處理,以每行內(nèi)容作為壓測數(shù)據(jù)進行壓測。否則以整個文件內(nèi)容作為壓測數(shù)據(jù)進行壓測。
壓測時長(秒)
默認為300秒。
壓測QPS上限
允許到達的QPS(即每秒發(fā)送請求的速率)上限值,默認為10000。
壓測RT上限 (ms)
允許達到的RT(即請求發(fā)出后系統(tǒng)響應(yīng)時間)上限值,單位為毫秒。超過該閾值會自動調(diào)節(jié)QPS,直到實時RT符合預(yù)期。
管理壓測任務(wù)
通過EASCMD客戶端管理壓測任務(wù)
查看壓測任務(wù)列表
使用
bench list
命令查看當(dāng)前用戶創(chuàng)建的壓測任務(wù)列表。以Windows64 版本為例,命令格式如下所示。eascmdwin64.exe bench ls
使用示例如下:
eascmdwin64.exe bench ls
系統(tǒng)輸出如下類似結(jié)果。
[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 | +-------------------------+--------------------------+-------------+----------------+---------+---------------------+
查看壓測任務(wù)詳情
使用
bench desc
命令查看指定壓測任務(wù)的詳細信息。以Windows64 版本為例,命令格式如下所示。eascmdwin64.exe bench desc [benchmark_task_name]
其中benchmark_task_name表示壓測任務(wù)名稱。使用示例如下:
eascmdwin64.exe bench desc benchmark-demo-test-c7eb
系統(tǒng)輸出如下類似結(jié)果。
+----------------+------------------------------------------------------------------------------+ | 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****, | | | }, | | | ... | | | } | +----------------+------------------------------------------------------------------------------+
啟動壓測任務(wù)實時可視化
使用
bench visualize
命令啟動壓測任務(wù)的實時可視化功能。該命令執(zhí)行完成后會在本地127.0.0.1啟動一個由webserver提供的實時監(jiān)控頁面的展示。以Windows64 版本為例,命令格式如下所示。eascmdwin64.exe bench visualize [benchmark_task_name]
使用示例如下。
eascmdwin64.exe bench visualize benchmark-xgb-test-b514
系統(tǒng)輸出如下類似結(jié)果。
[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
,即可查看實時數(shù)據(jù)結(jié)果。獲取壓測報告
當(dāng)壓測任務(wù)狀態(tài)為Stopped狀態(tài)時,表示壓測任務(wù)結(jié)束。壓測報告會保存到OSS中,您可以使用
bench report
命令獲取壓測任務(wù)報告。以Windows64 版本為例,命令格式如下所示。eascmdwin64.exe bench report [benchmark_task_name]
使用示例如下。
eascmdwin64.exe bench report benchmark-demo-test-c7eb
系統(tǒng)輸出如下類似結(jié)果。
[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后的鏈接,即可查看壓測報告結(jié)果,具體如下圖所示。
動態(tài)修改客戶端實例數(shù)量和并發(fā)數(shù)
當(dāng)壓測模式為manual時,需要使用
bench update
命令動態(tài)修改客戶端實例數(shù)量和并發(fā)數(shù)。以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
系統(tǒng)輸出如下類似結(jié)果。
[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
停止壓測任務(wù)
使用
bench stop
命令停止當(dāng)前正在運行的壓測任務(wù)。以Windows64 版本為例,命令格式如下所示。eascmdwin64.exe bench stop [benchmark_task_name]
使用示例如下:
eascmdwin64.exe bench stop benchmark-xgb-test-b514
系統(tǒng)輸出如下類似結(jié)果。
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
如果停止任務(wù)時,正在運行實時可視化功能。系統(tǒng)會在執(zhí)行可視化命令的終端輸出壓測報告,您也可以通過
bench report
命令,獲取更詳細的html圖文報告。啟動壓測任務(wù)
使用
bench start
命令啟動處于停止狀態(tài)的壓測任務(wù)。以Windows64 版本為例,命令格式如下所示。eascmdwin64.exe bench start [benchmark_task_name]
說明該命令與
bench create
命令的區(qū)別為,通過該命令重新啟動壓測任務(wù)后,會按照該任務(wù)最后一次更新的配置,重新啟動新一輪的壓測任務(wù)。使用示例如下:
eascmdwin64.exe bench start benchmark-xgb-test-b514
系統(tǒng)輸出如下類似結(jié)果。
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
刪除壓測任務(wù)
壓測任務(wù)運行結(jié)束后,控制器會根據(jù)壓測任務(wù)結(jié)束的狀態(tài)保留壓測任務(wù)的記錄,具體保留規(guī)則如下表所示。
結(jié)束狀態(tài)
保留時間
Stopped
48小時。
CreateFailed、UpdateFailed、Terminated或Error
10分鐘。
超過保留時間,系統(tǒng)會自動刪除壓測任務(wù)。
您也可以使用
bench delete
命令,手動刪除壓測任務(wù)。命令格式如下所示。eascmdwin64.exe bench delete [benchmark_task_name]
使用示例如下:
eascmdwin64.exe bench delete benchmark-xgb-test-b514
系統(tǒng)輸出如下類似結(jié)果。
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
通過控制臺管理壓測任務(wù)
您可以在壓測任務(wù)頁簽,查看已創(chuàng)建的壓測任務(wù)列表,并管理壓測任務(wù)。
支持一鍵啟動、停止或刪除壓測任務(wù)。
您需要單擊右上角的刷新按鈕,來刷新壓測任務(wù)狀態(tài)。
當(dāng)任務(wù)狀態(tài)為Running時,您可以單擊操作列下的查看,來查看任務(wù)的實時監(jiān)控數(shù)據(jù)。
當(dāng)壓測任務(wù)自動結(jié)束或手動停止壓測任務(wù)后,即任務(wù)狀態(tài)為Stopped時,您可以單擊操作列下的查看,來查看壓測報告。
壓測數(shù)據(jù)說明
壓測數(shù)據(jù)格式說明
服務(wù)的請求數(shù)據(jù)格式與模型的定義及Processor的實現(xiàn)有關(guān)。
如果服務(wù)的請求數(shù)據(jù)為非結(jié)構(gòu)化數(shù)據(jù),例如語音、圖片、文字等,則直接通過文件上傳作為壓測請求數(shù)據(jù)。
如果服務(wù)的請求數(shù)據(jù)為結(jié)構(gòu)化數(shù)據(jù),例如請求必須為TFRequest,則需要通過EAS SDK來構(gòu)造請求數(shù)據(jù)。您可以參考模型服務(wù)預(yù)熱,將生成的二進制數(shù)據(jù)通過文件上傳作為壓測請求數(shù)據(jù)。
壓測數(shù)據(jù)文件類型
壓測數(shù)據(jù)文件類型無特殊要求,與服務(wù)的業(yè)務(wù)類型有關(guān),例如.txt、.jpg、.bin等格式均支持。
壓測模式介紹
eas-benchmark支持auto、scan、manual三種壓測模式,您可以在配置文件optional部分,添加mode參數(shù),指定壓測模式。
auto模式
自動加壓模式。eas-benchmark控制器會自動創(chuàng)建用于壓測的Agent Worker,并設(shè)置合適的并發(fā),通過自動尋優(yōu)的算法來尋找服務(wù)的承壓上限。該模式中,您只需在配置文件中指定服務(wù)名字和壓測數(shù)據(jù)即可,其它參數(shù)均可使用默認值。具體配置示例,如下所示。
{ "service": { "serviceName": "demo" }, "data": { "path": "https://examplebucket.oss-cn-chengdu.aliyuncs.com/data/warmup.tf.bin" }, "optional" { "maxQPS": 1000, "duration": 300 } }
scan模式
周期加壓模式。根據(jù)您指定的起始QPS(minQPS),QPS上限(maxQPS),QPS增長時間間隔(adjustInterval),QPS增長步長(qpsGrowthDelta)等參數(shù),動態(tài)加壓,當(dāng)服務(wù)承載到達指定的maxRT、maxQPS或服務(wù)壓測出現(xiàn)錯誤數(shù)量超出容忍程度(faultTolerate)時為止。具體配置示例,如下所示。
{ "service": { "serviceName": "demo" }, "data": { "content": "aGVsbG8K" }, "optional": { "mode": "scan", "maxQPS": 1000, "minQPS": 500, "qpsGrowthDelta": 100, "adjustInterval": 30 } }
manual模式
手動加壓模式。固定壓測Agent數(shù)量及每個Agent的并發(fā)數(shù),您可以在壓測過程中動態(tài)調(diào)整Agent數(shù)量及Agent并發(fā)數(shù)。具體配置示例,如下所示。
{ "service": { "serviceName": "demo" }, "data": { "content": "aGVsbG8K" }, "optional": { "mode": "manual", "agentCount": 1, "concurrency": 5 } }
API使用說明
您可以通過調(diào)用API的方式,來創(chuàng)建和管理壓測任務(wù)。具體調(diào)用方法和詳情介紹,請參見壓測任務(wù)。
相關(guān)文檔
在確認服務(wù)性能滿足要求后,您即可使用該服務(wù)進行模型推理。具體操作,請參見調(diào)用方式概覽。