全部產品
Search
文件中心

Platform For AI:服務自動壓測

更新時間:Jul 13, 2024

eas-benchmark是EAS平台內建的分布式通用壓測工具,支援動態加壓、即時查看壓測秒級監控資料等,並在壓測結束後產生匯總的圖文報告。您可以通過該工具對使用EAS部署的服務建立壓測任務並進行一鍵壓測,從而瞭解EAS服務的使用效能。本文為您介紹如何建立和管理壓測任務。

前提條件

已部署模型服務,詳情請參見服務部署:控制台

快速入門

您可以登入eascmd用戶端後使用bench子命令來建立和管理壓測任務(建立壓測任務管理壓測任務),如何登入eascmd用戶端,請參見下載並認證用戶端

建立壓測任務

通過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.zippath進行配置。

{
    "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:手動加壓模式。

關於壓測模式的更多詳細內容,請參見壓測模式介紹

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, 直到請求錯誤率符合預期。

使用樣本如下(假設描述壓測任務相關資訊的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(自動加壓)模式,具體操作步驟如下。

  1. 進入模型線上服務(EAS)頁面。

    1. 登入PAI控制台

    2. 在左側導覽列單擊工作空間列表,在工作空間列表頁面中單擊待操作的工作空間名稱,進入對應的工作空間。

    3. 在工作空間頁面的左側導覽列選擇模型部署 > 模型線上服務(EAS),進入模型線上服務(EAS)頁面。

  2. 切換到壓測任務頁簽,單擊添加壓測任務

  3. 添加壓測任務頁面,配置以下參數後,單擊建立

    參數

    描述

    所屬服務

    選擇需要建立壓測任務的服務名稱。

    壓測資料

    支援按照單個資料資料地址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後的連結,即可查看壓測報告結果,具體如下圖所示。image.png

  • 動態修改用戶端執行個體數量和並發數

    當壓測模式為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小時。

    CreateFailedUpdateFailedTerminatedError

    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

通過控制台管理壓測任務

您可以在壓測任務頁簽,查看已建立的壓測工作清單,並管理壓測任務。image

  • 支援一鍵啟動、停止或刪除壓測任務。

  • 您需要單擊右上方的重新整理按鈕,來重新整理壓測任務狀態。

  • 當任務狀態Running時,您可以單擊操作列下的查看,來查看任務的即時監控資料。407eca10047573f0785f9b5940877175

  • 當壓測任務自動結束或手動停止壓測任務後,即任務狀態Stopped時,您可以單擊操作列下的查看,來查看壓測報告。49ee99a5367c88017255f9fddb0c49a0

壓測資料說明

壓測資料格式說明

服務的請求資料格式與模型的定義及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
        }
    }

相關文檔

在確認服務效能滿足要求後,您即可使用該服務進行模型推理。具體操作,請參見調用方式概覽