性能測試PTS的Access Log壓測功能,僅依賴網關日志,對服務端零侵入,通過PTS界面的簡單配置,可以快速實現真實的網關流量回放。本文介紹如何使用Access Log壓測功能。
方案概覽
Access Log壓測通過簡單的配置即可實現網關真實流量回放,并且將壓測請求參數化,自動創建壓測場景,以及通過簡單的登錄接口配置即可解決登錄態過期的問題。其配置主要分為四個模塊:
配置日志生產者:您的訪問日志可能來自于負載均衡ALB、CLB、MSE網關或者云服務器ECS中自建的Web服務,首先需要將訪問日志投遞到日志服務SLS中。關于日志投遞可以參考配置ALB訪問日志,配置CLB訪問日志,MSE開啟網關日志投遞,使用Nginx配置模式采集日志。
配置日志服務:用于接收日志生產者投遞的日志。
配置Access Log壓測:分析日志服務中存儲的日志,獲取待壓接口并構造壓測場景。
編輯PTS場景:待Access Log壓測場景構造完成后,將跳轉到PTS場景編輯頁面,您可在此頁面做進一步配置,也可以直接調試場景并啟動壓測。
日志規范
URL字段索引和值存在,且索引名在["request_uri", "path", "request_url", "url", "uri", "requestURI", "requestURL"]中。如果URL的路徑和參數是分開記錄的,參數字段值存在,且索引名在["method", "http_method", "request_method"]中。
如需回放POST請求,必須滿足以下要求:
HTTP POST body字段索引和值存在,且索引名在["body", "http_body", "http_request_body", "request_body"]中。當前僅支持
application/x-www-form-urlencoded
,text/plain
,application/json
格式的body,不支持二進制數據body。Content-Type
字段索引和值存在,且索引名在["content_type", "contentType"]中,否則PTS將自動推斷Content-Type
。若您使用MSE網關,可參考將完整的請求應答信息添加到訪問日志,將POST請求的body打印到網關日志中。如此打印的POST請求,PTS會直接支持回放。
如使用簡單模式,還需滿足以下規范,不符合規范的日志會被忽略:
域名字段索引和值存在,且索引名在["host", "http_host", "authority"]中。
HTTP協議字段索引和值存在,且索引名在["http_protocol", "protocol", "scheme", "http_scheme"]中,且值為
http
或https
,否則將默認使用http
。
前提條件
已開通日志服務,已創建Project和標準型Logstore,并完成索引配置和日志采集。具體操作,請參見創建項目Project,創建Logstore,創建索引。
已開通PTS服務。
步驟一:創建Access Log壓測場景
步驟二:選擇壓測模式
在創建Access Log 壓測場景頁面,打開簡單回放模式開關并單擊選擇目標接口即可進入簡單模式;關閉簡單回放模式開關并單擊選擇目標接口即可進入標準模式。
簡單模式直接回放日志記錄的流量,不解析請求結構,不限制不同的域名和接口數量,但只能控制整個場景的RPS,并且不關心登錄態。
標準模式能配置登錄態,能分析各接口的請求數和MaxQPS分布,并能精確控制每個接口的壓力值,但限制不同的域名和接口數量。
您可根據具體需求選擇簡單模式或標準模式做日志回放,對比如下:
壓測模式 | 說明 |
簡單模式 |
|
標準模式 |
|
簡單模式
配置回放參數
簡單模式分析結果展示所選時段內有效請求數,您可以進行以下參數的配置:
是否回放POST請求:開啟開關后PTS將為您回放POST請求,但如果您的Request Body并未打到Access Log中, 回放POST請求將不帶Body, 可能會出錯,謹慎開啟。
是否重復回放:若開啟重復回放,回放到日志末尾時將會從頭循環回放請求。 若關閉重復回放,回放到末尾時將停止發壓,但未達到指定時長回放不會自動停止,請在請求發送完后手動停止回放避免更多VUM消耗。
回放時長(分鐘):流量回放的持續時長,默認十分鐘。
每秒請求數:配置流量回放的速率,PTS會以該速率回放您的Access Log流量,該數值會以平均原則分配到每個抽象接口上。
構造壓測場景
單擊構造壓測場景,PTS會總結回放配置的結論,單擊確認,將跳轉到PTS場景編輯頁面。您可在此頁面進一步編輯生成的場景,也可以跳過 配置PTS場景直接啟動壓測。
標準模式
如果日志中包含請求域名,且字段名在["host", "http_host", "authority"]中,PTS將會自動補全host,同時你也可以自行修改。當前僅支持單host, 所有接口共享這個host。如果您需要回放多個域名,可以依次選擇接口去創建場景,然后在壓測場景中做進一步修改即可。
選擇目標接口
PTS 展示所選的時間段從 access log 獲知的頻數和 QPS 維度下 TOP10 接口,可單擊接口旁的灰色圓圈選擇待壓接口。已選的接口會展示在已選目標接口區域。
配置壓測參數
如果待壓接口無需登錄,則打開目標接口無需登錄開關;如果待壓接口需要登錄態信息,則需要配置登錄接口信息,配置方法如下所示:
a. 從接口選擇:如果查詢出的接口中包括登錄接口,可以選擇此項。PTS會自動將該接口作為登錄接口,使用日志中的參數,導出Cookie登錄態使用,無需您手動配置。
b. 配置登錄接口:如果展示出的接口沒有登錄的接口,您也可以手工配置。輸入登錄接口地址,如http://example.com/login。配置登錄接口的body參數,如username、password。可以用${}引用參數,用到的參數請點擊配置參數文件,更多信息,請參見數據源。
確認配置無誤后,單擊構造壓測場景,將跳轉至PTS場景編輯頁面。您可在此頁面進一步編輯生成的場景,也可以跳過配置PTS場景直接啟動壓測。
(可選)步驟三: 配置PTS場景
步驟四: 啟動壓測
分析壓測結果
壓測結束后,系統會自動獲取壓測數據,例如壓測場景指標、業務詳情數據、監控詳情數據和API采樣日志等,生成壓測報告。更多信息,請參見查看PTS壓測報告。