全部產品
Search
文件中心

Performance Testing Service:Access Log壓測

更新時間:Feb 16, 2025

Performance Testing Service的Access Log壓測功能,僅依賴網關日誌,對服務端零侵入,通過PTS介面的簡單配置,可以快速實現真實的網關流量回放。本文介紹如何使用Access Log壓測功能。

方案概覽

image

Access Log壓測通過簡單的配置即可實現網關真實流量回放,並且將壓測請求參數化,自動建立壓測情境,以及通過簡單的登入介面配置即可解決登入態到期的問題。其配置主要分為四個模組:

  • 配置日誌生產者:您的訪問日誌可能來自於負載平衡ALB、CLB、MSE網關或者Elastic Compute Service中自建的Web服務,首先需要將訪問日誌投遞到Log ServiceSLS中。關於日誌投遞可以參考配置ALB訪問日誌配置CLB訪問日誌MSE開啟網關日誌投遞使用Nginx配置模式採集文本日誌

  • 配置Log Service:用於接收日誌生產者投遞的日誌。

  • 配置Access Log壓測:分析Log Service中儲存的日誌,擷取待壓介面並構造壓測情境。

  • 編輯PTS情境:待Access Log壓測情境構造完成後,將跳轉到PTS情境編輯頁面,您可在此頁面做進一步配置,也可以直接調試情境並啟動壓測。

日誌規範

重要
  1. URL欄位索引和值存在,且索引名在["request_uri", "path", "request_url", "url", "uri", "requestURI", "requestURL"]中。如果URL的路徑和參數是分開記錄的,參數欄位值存在,且索引名在["method", "http_method", "request_method"]中。

  2. 如需回放POST請求,必須滿足以下要求:

    • HTTP POST body欄位索引和值存在,且索引名在["body", "http_body", "http_request_body", "request_body"]中。當前僅支援application/x-www-form-urlencodedtext/plainapplication/json格式的body,不支援位元據body。

    • Content-Type欄位索引和值存在,且索引名在["content_type", "contentType"]中,否則PTS將自動推斷Content-Type

    • 若您使用MSE網關,可參考將完整的請求應答資訊添加到訪問日誌,將POST請求的body列印到網關日誌中。如此列印的POST請求,PTS會直接支援回放。

  3. 如使用簡單模式,還需滿足以下規範,不符合規範的日誌會被忽略:

    • 網域名稱欄位索引和值存在,且索引名在["host", "http_host", "authority"]中。

    • HTTP協議欄位索引和值存在,且索引名在["http_protocol", "protocol", "scheme", "http_scheme"]中,且值為httphttps,否則將預設使用http

前提條件

步驟一:建立Access Log壓測情境

  1. 登入PTS控制台,在左側導覽列選擇效能測試 > 建立情境,然後單擊Access Log壓測image

  2. 查詢 / 分析日誌

    選擇Access Log所在SLS日誌 region日誌 project日誌庫,設定查詢參數,時間段,單擊查詢/分析查詢需要回放的日誌。日誌索引需要滿足日誌規範要求,不符合規範的日誌將被忽略。image

步驟二:選擇壓測模式

建立Access Log 壓測情境頁面,開啟簡單回放模式開關並單擊選擇目標介面即可進入簡單模式;關閉簡單回放模式開關並單擊選擇目標介面即可進入標準模式。

image

重要

簡單模式直接回放日誌記錄的流量,不解析請求結構,不限制不同的網域名稱和介面數量,但只能控制整個情境的RPS,並且不關心登入態。

標準模式能配置登入態,能分析各介面的請求數和MaxQPS分布,並能精確控制每個介面的壓力值,但限制不同的網域名稱和介面數量。

您可根據具體需求選擇簡單模式或標準模式做日誌回放,對比如下:

壓測模式

說明

簡單模式

  • 當前僅支援GET和POST請求的回放,PTS會原樣回放記錄在日誌中的請求(對於不帶body的POST請求會用空body進行回放),可以選擇是否回放POST請求。

  • 流量回放情境會根據HTTP 要求方法(GET/POST),協議類型(HTTP/HTTPS),以及POST Body的Content-Type欄位將請求進行分類。PTS會使用不同的抽象介面回放各類介面,如HTTP GET請求和HTTPS GET請求分屬於兩個不同的抽象介面。每個介面之間是並行關係,使用從日誌中抽取的參數。

  • 簡單模式不關心登入態,如果有配置登入態的需求,請使用標準模式

標準模式

  • 當前僅支援GET和POST請求的回放,並自動過濾請求靜態資源的介面。不帶請求body的POST請求將不做回放。流量回放時每個介面之間是並行關係,使用從日誌中抽取的參數。

  • 登入態預設使用Cookie,使用的Cookie數為登入介面的參數檔案的行數且最多100個,預設不配置請求Header。如果有進一步的要求,可以在產生PTS壓測情境後,在情境編輯頁面進行進一步編輯。

簡單模式

  1. 配置回放參數

    簡單模式分析結果展示所選時段內有效請求數,您可以進行以下參數的配置:

    • 是否回放POST請求:開啟開關後PTS將為您回放POST請求,但如果您的Request Body並未打到Access Log中, 回放POST請求將不帶Body, 可能會出錯,謹慎開啟。

    • 是否重複回放:若開啟重複回放,回放到日誌末尾時將會從頭迴圈回放請求。 若關閉重複回放,回放到末尾時將停止發壓,但未達到指定時間長度回放不會自動停止,請在請求發送完後手動停止回放避免更多VUM消耗。

    • 回放時間長度(分鐘):流量回放的持續時間長度,預設十分鐘。

    • 每秒請求數:配置流量回放的速率,PTS會以該速率回放您的Access Log流量,該數值會以平均原則分配到每個抽象介面上。image

  2. 構造壓測情境

    單擊構造壓測情境,PTS會總結回放配置的結論,單擊確認,將跳轉到PTS情境編輯頁面。您可在此頁面進一步編輯產生的情境,也可以跳過 配置PTS情境直接啟動壓測

標準模式

說明

如果日誌中包含請求網域名稱,且欄位名在["host", "http_host", "authority"]中,PTS將會自動補全host,同時你也可以自行修改。當前僅支援單host, 所有介面共用這個host。如果您需要回放多個網域名稱,可以依次選擇介面去建立情境,然後在壓測情境中做進一步修改即可。

  1. 選擇目標介面

    PTS 展示所選的時間段從 access log 獲知的頻數和 QPS 維度下 TOP10 介面,可單擊介面旁的灰色圓圈選擇待壓介面。已選的介面會展示在已選目標介面地區。image

  2. 配置壓測參數

    如果待壓介面無需登入,則開啟目標介面無需登入開關;如果待壓介面需要登入態資訊,則需要配置登入介面資訊,配置方法如下所示:

    a. 從介面選擇:如果查詢出的介面中包括登入介面,可以選擇此項PTS會自動將該介面作為登入介面,使用日誌中的參數,匯出Cookie登入態使用,無需您手動設定。image

    b. 配置登入介面:如果展示出的介面沒有登入的介面,您也可以手工配置。輸入登入介面地址,如http://example.com/login。配置登入介面的body參數,如username、password。可以用${}引用參數,用到的參數請點擊配置參數檔案,更多資訊,請參見資料來源image

  3. 確認配置無誤後,單擊構造壓測情境,將跳轉至PTS情境編輯頁面。您可在此頁面進一步編輯產生的情境,也可以跳過配置PTS情境直接啟動壓測

(可選)步驟三: 配置PTS情境

  1. 單擊資料匯出,可編輯使用的Cookie數。如需要使用其他登入態比如token,單擊登入介面後,設定出參,並在資料匯出節點設定匯出,詳見Use a data export instructionimage

  2. 單擊任意介面,可為介面添加Header。image

  3. 施壓配置請參考:壓力模型指定施壓IP數

步驟四: 啟動壓測

  1. 調試情境可驗證配置是否合理,避免壓測失敗。若需進行情境調試,單擊調試情境即可進入情境調試頁面。更多資訊,請參見調試情境

  2. 單擊儲存去壓測,在溫馨提示頁面,選擇立即執行並勾選確認本次壓測已獲得准許並遵守當地法律,然後單擊啟動壓測

分析壓測結果

壓測結束後,系統會自動擷取壓測資料,例如壓測情境指標、業務詳情資料、監控詳情資料和API採樣日誌等,產生壓測報告。更多資訊,請參見查看PTS壓測報告