服务限流常见问题

本文汇总梳理了限流功能使用过程中遇到的常见问题。

为什么服务限流配置后没有效果?

排查步骤如下:

  1. 确认 SOFA 的版本大于 3.3.0,如果低于这个版本,请升级版本。

    SOFA 版本说明,请参见 版本说明

  2. 接入动态配置客户端和服务限流。

    <dependency>
        <groupId>com.alipay.sofa</groupId>
        <artifactId>ddcs-enterprise-sofa-boot-starter</artifactId>
    </dependency>
    <dependency>
        <groupId>com.alipay.sofa</groupId>
        <artifactId>guardian-sofa-boot-starter</artifactId>
    </dependency>
  3. 确认客户使用的是 REST 协议的限流方式,步骤如下:

    1. 检查代码的编写,验证 Facade 接口、实现类和 XML 配置。接口定义如下:接口.png

    2. XML 中配置实现类的 bean,同时发布 REST 协议的服务。xml配置.png

  4. 将应用部署到 CAFE 进行测试,步骤如下:

    1. 部署完成,通过查看 Guardian 的 guardian-default.log 日志文件,确认 Guardian 组件已经成功注册。guardian-log.png

    2. 在 SOFA 控制台配置限流条件。

      配置的应用名称必须和 application.properties 中的spring.application.name 值一致。配置值.png

    3. 配置完成以后,重新打开服务限流的开关。

    4. 通过查看 Guardian 的 guardian-default.log 日志文件确认应用程序成功打印了配置信息的日志,如下所示:日志打印.png

    5. 确认以上信息无误后,在浏览器进行访问,验证效果。可通过 guardian-limit-stat.log 查看成功通过的请求。stat日志.png

为什么在配置的 logs 文件夹下没有限流日志文件目录?

您需要在启动类中添加自定义路径,限流的日志文件将在设置的目录生成。示例如下:System.setProperty("user.home","/tmp/localfile")

为什么业务程序启动时,Guardian 没有加载?

问题现象:

在业务程序启动的时候,Guardian 没有加载,日志目录也没有生成。

问题原因:

业务程序打包时,没有引入 Guardian 的 JAR 包。

解决方案:

在进行打包业务程序时,确保引入 Guardian 的 JAR 包。