问题现象
因被压测应用出于安全原因而不对公网暴露服务,或者使用了阿里云云产品Web应用防火墙(Web Application Firewall,简称WAF),因此可能会因为压测流量较大而触发一些拦截、阻断和清洗,导致PTS的压测流量被Web应用防火墙拦截。
解决方案
方案一:WAF设置Header白名单如果被压测的应用使用了WAF,您可以根据Header在WAF中配置网站白名单规则,放行所有PTS的压测请求,具体操作如下:
在顶部菜单栏,选择Web应用防火墙实例的资源组和地域(中国内地、非中国内地)。
在左侧导航栏选择。
在
网站防护页面上方,切换到要设置的域名。
在
Web安全页签,单击页面右上角的
网站白名单,然后在弹出的对话框中新建网站白名单规则,并设置匹配条件为Header
x-pts-test
存在。
说明 PTS发送的HTTP请求中,会带有
x-pts-test
的Header,因此您需要新建一个网站白名单规则并将其匹配条件设置为Header
x-pts-test
存在。有关网站白名单设置的更多信息,请参见
设置网站白名单。
方案二:获取施压机IP并设置IP白名单如果无法在WAF层面设置Header白名单或未使用WAF,您可以在安全策略中对施压机开放IP白名单,获取施压机IP的具体操作如下:
直接开启压测,在压测启动后获取施压机IP。若您已有创建好的压测场景,您可以在控制台的左侧导航栏选择,然后在场景列表页面,单击目标压测场景操作列的启动,启动压测。
开始压测后,在
压测中页面,单击
查看,您可直接查看到施压机IP。
您还可以在压测中页面,单击流量来源,然后在右侧弹出的流量来源面板中,您可以查看施压机的地域以及IP等的具体信息。
使用共享资源池无法在启动压测之前获取施压机IP,如需在施压机施压之前能够完成设置白名单,您可以在压测场景中添加起始等待时间,等待时间根据设置白名单所需时间来指定,在延时释放期间仍会消耗VUM。PTS压测和JMeter压测中设置起始等待时间的具体操作如下:
PTS压测中设置起始等待时间
在每一个串联链路中添加一个延时释放的指令,延时的时间根据设置白名单所需时间来指定。添加延时释放指令的具体操作,请参见延迟释放指令。
JMeter压测中设置起始等待时间
在JMeter测试计划中,右键选择,添加setUp线程组。
在
setUp Thread Group页面勾选
Specify Thread lifetime,设置setUp线程组的起始延时时间为预计等待时间即可,如下图所示。