問題現象
因被壓測應用出于安全原因而不對公網暴露服務,或者使用了阿里云云產品Web應用防火墻(Web Application Firewall,簡稱WAF),因此可能會因為壓測流量較大而觸發一些攔截、阻斷和清洗,導致PTS的壓測流量被Web應用防火墻攔截。
解決方案
方案一:WAF設置Header白名單
如果被壓測的應用使用了WAF,您可以根據Header在WAF中配置網站白名單規則,放行所有PTS的壓測請求,具體操作如下:
登錄Web應用防火墻3.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線程組的起始延時時間為預計等待時間即可,如下圖所示。