問題現象
因被壓測應用出於安全原因而不對公網暴露服務,或者使用了阿里雲雲產品Web Application Firewall(Web Application Firewall,簡稱WAF),因此可能會因為壓測流量較大而觸發一些攔截、阻斷和清洗,導致PTS的壓測流量被Web Application Firewall攔截。
解決方案
方案一:WAF設定Header白名單
如果被壓測的應用使用了WAF,您可以根據Header在WAF中配置網站白名單規則,允許存取所有PTS的壓測請求,具體操作如下:
登入Web Application Firewall3.0控制台。在頂部功能表列,選擇WAF執行個體的資源群組和地區(中国内地、非中国内地)。
在左側導覽列選擇防護配置 > Web 核心防護。
單擊白名單左側的
表徵圖,然後單擊操作列的建立規則。然後在彈出的對話方塊中建立網站白名單規則,並設定匹配條件為Header x-pts-test存在。
PTS發送的HTTP請求中,會帶有x-pts-test的Header,因此您需要建立一個網站白名單規則並將其匹配條件設定為Header x-pts-test存在。有關網站白名單設定的更多資訊,請參見設定網站白名單。
方案二:擷取施壓機IP並設定IP白名單
您也可以在安全性原則中對施壓機開放IP白名單,請注意,壓測IP不固定,此方案需要每次壓測時,重新設定IP白名單,建議使用上文的方案一。擷取施壓機IP的具體操作如下:
直接開啟壓測,在壓測啟動後擷取施壓機IP。若您已有建立好的壓測情境,您可以在控制台的左側導覽列選擇,然後在情境列表頁面,單擊目標壓測情境操作列的啟動,啟動壓測。
開始壓測後,在壓測中頁面,您可直接查看到施壓機IP。
使用共用資源池無法在啟動壓測之前擷取施壓機IP,如需在施壓機施壓之前能夠完成設定白名單,您可以在壓測情境中添加起始等待時間,等待時間根據設定白名單所需時間來指定,在延時釋放期間仍會消耗VUM。PTS壓測和JMeter壓測中設定起始等待時間的具體操作如下:
PTS壓測中設定起始等待時間
在每一個業務會話中添加一個延時釋放的指令,延時的時間根據設定白名單所需時間來指定。添加延時釋放指令的具體操作,請參見延遲釋放指令。
JMeter壓測中設定起始等待時間
在JMeter測試計劃中,右鍵選擇,添加setUp線程組。

在setUp Thread Group頁面勾選Specify Thread lifetime,設定setUp線程組的起始延時時間為預計等待時間即可,如下圖所示。
