PTS的压测流量因安全策略无法直接访问Web应用,怎么办?

问题现象

因被压测应用出于安全原因而不对公网暴露服务,或者使用了阿里云云产品Web应用防火墙(Web Application Firewall,简称WAF),因此可能会因为压测流量较大而触发一些拦截、阻断和清洗,导致PTS的压测流量被Web应用防火墙拦截。

解决方案

方案一:WAF设置Header白名单

如果被压测的应用使用了WAF,您可以根据Header在WAF中配置网站白名单规则,放行所有PTS的压测请求,具体操作如下:

  1. 登录Web应用防火墙3.0控制台。在顶部菜单栏,选择WAF实例的资源组和地域(中国内地非中国内地

  2. 在左侧导航栏选择防护配置 > Web基础防护

  3. 单击白名单左侧的image.png图标,然后单击操作列的新建规则。然后在弹出的对话框中新建网站白名单规则,并设置匹配条件为Header x-pts-test存在。

说明

PTS发送的HTTP请求中,会带有x-pts-test的Header,因此您需要新建一个网站白名单规则并将其匹配条件设置为Header x-pts-test存在。有关网站白名单设置的更多信息,请参见设置网站白名单

方案二:获取施压机IP并设置IP白名单

您也可以在安全策略中对施压机开放IP白名单,请注意,压测IP不固定,此方案需要每次压测时,重新配置IP白名单,建议使用上文的方案一。获取施压机IP的具体操作如下:

直接开启压测,在压测启动后获取施压机IP。若您已有创建好的压测场景,您可以在控制台的左侧导航栏选择性能测试 > 场景列表,然后在场景列表页面,单击目标压测场景操作列的启动,启动压测。

开始压测后,在压测中页面,您可直接查看到施压机IP。image

使用共享资源池无法在启动压测之前获取施压机IP,如需在施压机施压之前能够完成设置白名单,您可以在压测场景中添加起始等待时间,等待时间根据设置白名单所需时间来指定,在延时释放期间仍会消耗VUM。PTS压测和JMeter压测中设置起始等待时间的具体操作如下:

  • PTS压测中设置起始等待时间

    在每一个业务会话中添加一个延时释放的指令,延时的时间根据设置白名单所需时间来指定。添加延时释放指令的具体操作,请参见延迟释放指令

  • JMeter压测中设置起始等待时间

    1. 在JMeter测试计划中,右键选择Test Plan > Add > Threads(Users) > setUp Thread Group,添加setUp线程组。rj

    2. setUp Thread Group页面勾选Specify Thread lifetime,设置setUp线程组的起始延时时间为预计等待时间即可,如下图所示。ro