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

Route53 API throttling #466

Closed
apollo-3 opened this issue Mar 9, 2021 · 6 comments
Closed

Route53 API throttling #466

apollo-3 opened this issue Mar 9, 2021 · 6 comments
Assignees
Labels
bug This issue/PR relates to a bug module module needs_info This issue requires further information. Please answer any outstanding questions plugins plugin (any type)

Comments

@apollo-3
Copy link

apollo-3 commented Mar 9, 2021

SUMMARY

This recent change throttles Route53 API heavily. The problem is in a jitter backoff, which relies on retry_interval attribute of the module (by default 500 secs). Default max_delay in a jitter is 60 seconds, so basically the minimum value of 60 is always chosen and it hits API badly with retry delays from 0 to 60 secs. There is no way to change neither the number of retries nor max delay time. Also inability to select backoff type is also disturbing, because exponential backoff would work in our use-case, but jittered exponential backoffs - not sure

ISSUE TYPE
  • Bug Report
COMPONENT NAME

route53

ANSIBLE VERSION
2.10.0
@ansibullbot
Copy link

Files identified in the description:

If these files are inaccurate, please update the component name section of the description or use the !component bot command.

click here for bot help

@ansibullbot
Copy link

@ansibullbot ansibullbot added bug This issue/PR relates to a bug module module needs_triage plugins plugin (any type) labels Mar 9, 2021
@gravesm
Copy link
Member

gravesm commented Apr 14, 2021

cc @tremble

@goneri
Copy link
Member

goneri commented Apr 30, 2021

Hi @tremble,

I took the freedom to assign this to you. It's just to be sure this get your attention :-).

@tremble
Copy link
Contributor

tremble commented May 1, 2021

Thank you for taking the time to raise this issue.

It would be helpful if you could explain what problem you're seeing with less qualitative language: "Hits the API badly" could either be interpreted as "Hits the API very frequently", or "not frequently enough". If you're seeing errors from the module including these would enable us to identify exactly what behaviour you're seeing, especially if that behaviour isn't a direct result of the retry frequency or the back-off mechanism you're referring to. Knowing what frequency of API requests you're seeing, how many requests you're seeing from each task, and how many requests of which types you're seeing hitting the API in parallel would all assist in understanding the issue.

There are 3 different mechanisms being used to contact the APIs (direct calls, using boto3's paginator and using boto3's waiters), it's quite possible that just one of these requests is problematic, especially since one of them doesn't even use the retry mechanism you're referring to.

The use of jittered back-off is based upon a recommendation from one of Amazon's engineers (https://aws.amazon.com/blogs/architecture/exponential-backoff-and-jitter/) if you have some (repeatable) experimental evidence you could use to counter their recommendations I'd be interested in seeing it.

@tremble tremble added the needs_info This issue requires further information. Please answer any outstanding questions label May 1, 2021
@tremble
Copy link
Contributor

tremble commented Oct 16, 2021

I believe the issue that was being seen was actually due to a bug and should be fixed by #564.

@tremble tremble closed this as completed Oct 16, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug This issue/PR relates to a bug module module needs_info This issue requires further information. Please answer any outstanding questions plugins plugin (any type)
Projects
None yet
Development

No branches or pull requests

5 participants