I am busy with setting up rate limiting for one of our services. We are using redisquota for this and we do see that when the quota is reached we get response code 429 as expected.
For testing purposes we use maxAmount: 2 and validDuration: 10s with the rate limit algorithm set to FIXED_WINDOW. Basically I want to allow 2 requests within the span of 10 seconds. The problem is that once I reach response code 429 I keep getting it for 10+ seconds with intermittent 200s in between, which I wouldn’t expect. This behavior is reproducible for both GET and POST requests. I am aware that the FIXED_WINDOW approach can allow 2x peak specified rate but I wouldn’t expect to return unexpected 429s.
Is it possible that one of the components (like the mixer or envoy) is caching this type of responses (429)?
We are using Istio 1.0.3 on GKE.
If there is anyone that has a better understanding of how the rate limiting works please shed some light of how it is suppose to work. Thank you!