问题现象

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

解决方案

  • 方案一:WAF设置Header白名单

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

    1. 登录Web应用防火墙控制台
    2. 在顶部菜单栏,选择Web应用防火墙实例的资源组和地域(中国内地非中国内地)。
    3. 在左侧导航栏选择防护配置 > 网站防护
    4. 网站防护页面上方,切换到要设置的域名。切换域名
    5. Web安全页签,单击页面右上角的网站白名单,然后在弹出的对话框中新建网站白名单规则,并设置匹配条件为Header x-pts-test存在。
      说明 PTS发送的HTTP请求中,会带有x-pts-test的Header,因此您需要新建一个网站白名单规则并将其匹配条件设置为Header x-pts-test存在。有关网站白名单设置的更多信息,请参见设置网站白名单
      et
  • 方案二:获取施压机IP并设置IP白名单

    如果无法在WAF层面设置Header白名单或未使用WAF,您可以在安全策略中对施压机开放IP白名单,获取施压机IP的具体操作如下:

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

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

    您还可以在压测中页面,单击流量来源,然后在右侧弹出的流量来源面板中,您可以查看施压机的地域以及IP等的具体信息。

    使用共享资源池无法在启动压测之前获取施压机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