Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Backend Throttling and Burst Control Malfunctioning in Hybrid Mode After Losing Connection to Redis Cache Server Following New Update #3577

Open
sajith-madhusanka opened this issue Sep 2, 2024 · 0 comments

Comments

@sajith-madhusanka
Copy link

Description

When the Hybrid throttle mode is enabled and connectivity with the Redis cache server is lost, requests to the backend server are allowed in the initial second until the allocated local quota is reached. However, afterwards, requests fail with a 500 HTTP status code, and the TPS drastically decreases.

{"description":"Error during validating the request","message":"Unclassified Validation Failure","code":"102500"}

Steps to Reproduce

Deploy a setup similar to the one described below:

TEST SETUP

  • Choreo Connect Router 1 node (image tag: 1.0.0.26)
  • Choreo Connect Enforcer 1 node (image tag: 1.0.0.26)
  • Choreo Connect Adapter 1 node (image tag: 1.0.0.26)
  • WSO2 AM 4.0.0 1 node
  • Redis Cache server 1 node

TEST CASE (throttleSyncAsyncHybridModeEnabled = true)

  • Max backend throughput : 100 TPS
  • Test Duration: 15 mins
  • Single thread group Invoke single API.
  • Redis cache server connectivity breaks after 8 minutes.
  • Enforcer Throttling configuration
[enforcer.throttling]
      enableGlobalEventPublishing = true
      jmsConnectionProviderURL = "amqp://admin:admin@carbon/carbon?brokerlist='tcp://wso2apim:5672'"
      [enforcer.throttling.publisher]
        username = "admin"
        password = "$env{tm_admin_pwd}"
        [[enforcer.throttling.publisher.URLGroup]]
          receiverURLs = ["tcp://wso2apim:9611"]
          authURLs = ["ssl://wso2apim:9711"]
      [enforcer.throttling.localThrottler]
        throttleFrequency = 1000
        throttlingPoolSize = 1000
        throttleSyncAsyncHybridModeEnabled = true
        [enforcer.throttling.localThrottler.distributedCounter]
         enabled = true
         redisHost = "redis-service"
         redisPort = 6379
         redisUser = "default"
         redisPass = "userpass"
         gatewayID = "$env{GATEWAY_NODE_ID}"
         minGatewayCount = 1

Version

1.0.0

Environment Details (with versions)

No response

Relevant Log Output

No response

Related Issues

No response

Suggested Labels

No response

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant