spring-cloud-gateway icon indicating copy to clipboard operation
spring-cloud-gateway copied to clipboard

Spring-cloud-gateway : Request-rate-limiting not working

Open kumaritian opened this issue 3 years ago • 0 comments

@GuyLewin @royclarkson @rmorgan @jvalkeal @scottfrederick

I have configured 60 requests per minute as per the formula defined in Redis-Ratelimiter (Note: Spring-boot 2.7.2 version, Spring-cloud-gateway 3.1.3) but it is not working as expected i.e. within a minute I am able to request > 60 requests.

I have derived below formula: burstCapacity = number of requests (replenishRate) * time unit is seconds (requestedTokens)

Java class:

@SpringBootApplication
public class MtAmpApigatewayApplication {

	public static void main(String[] args) {
		SpringApplication.run(MtAmpApigatewayApplication.class, args);
	}
	
	@Bean
	public KeyResolver userKeyResolver() {
		return exchange -> Mono.just("1");
	}
}

application.yml configuration:

       args:
            ## configuration for 60 requests per minute
            "[redis-rate-limiter.replenishRate]": 60    # 60 requests
            "[redis-rate-limiter.burstCapacity]": 3600  # burstCapacity = replenishRate * requestedTokens
            "[redis-rate-limiter.requestedTokens]": 60  # 60 seconds = 1 min

but the above configuration is not working as expected. So can you

  1. Provide the formula for calculating API rate limiting for different combination

  2. And also provide the rate limiting configuration for 60 requests/1 minute.

       <dependencies>
     <!-- API gateway dependencies -->
     <dependency>
     	<groupId>org.springframework.boot</groupId>
     	<artifactId>spring-boot-starter-webflux</artifactId>
     </dependency>
     <dependency>
     	<groupId>org.springframework.cloud</groupId>
     	<artifactId>spring-cloud-starter-gateway</artifactId>
     </dependency>
     <!-- redis -->
     <dependency>
     	<groupId>org.springframework.boot</groupId>
     	<artifactId>spring-boot-starter-data-redis-reactive</artifactId>
     </dependency>
        </dependencies>
    

kumaritian avatar Aug 21 '22 02:08 kumaritian