问题现象
因被压测应用出于安全原因而不对公网暴露服务,或者使用了阿里云云产品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线程组的起始延时时间为预计等待时间即可,如下图所示。