web-dev-qa-db-fra.com

AWS Lambda TooManyRequestsException: taux dépassé

Lorsque nous tentions d'exécuter une fonction Lambda d'Amazon Web Services (AWS) (plusieurs fois), nous voyions l'erreur:

AWS Lambda TooManyRequestsException: Rate Exceeded

Comment résolvons-nous cela?

18
nelsonic

Comme indiqué par Michael, c'est le message d'erreur que vous verrez lorsque vous atteindrez la valeur par défaut documentée " sécurité" limite de 100 appels simultanés :

" AWS Lambda a un accélérateur de sécurité par défaut de 100 exécutions simultanées par compte et par région. Si vous souhaitez soumettre une demande pour augmenter la limitation de 100 exécutions simultanées, vous pouvez visiter notre centre d'assistance = ... "

La solution a été d'ouvrir un ticket d'assistance fournissant les informations suivantes:

Limit increase request 1 
Service: Lambda 
Region: EU (Ireland) 
Limit name: concurrent requests (average duration * average TPS) 
New limit value: 2000

Et puis, dans le corps du ticket/demande, essayez de estimer votre modèle d'utilisation:

Expected average requests per second: 200 
Expected peak requests per second: 2000 
Expected function duration: 2 seconds 
Function memory size: 1000mb 
Invocation Type: Request-response 
Event Source: Api Gateway & Lambda<->Lambda

Cela peut prendre un pendant pour obtenir une réponse du support AWS à moins que vous ne payiez pour un support premium, il est donc préférable de charger le test de votre application pendant le développement/la préparation et demande d'augmenter les appels simultanés avant vous lancez votre application!

Dans notre cas, il a fallu 45 heures à partir de la demande de support initiale pour obtenir l'augmentation de la limite d'invocation. aws-lambda-limits-increase-requestaws-lambda-limits-request-sorted

Les gens du support AWS sont adorables, il a juste fallu ce qui semblait être âges ( presque deux jours!) Pour obtenir l'augmentation du niveau de service, ce qui aurait été fatal si notre lancement avait été public!

26
nelsonic

J'ai rencontré ce problème lorsque j'ai défini la simultanéité de réserve en dessous de 100. Et utilisez aws-sdk pour envoyer plus de 100 demandes à la fois.

En fait, lorsque la concurrence réservée est relativement faible, toute demande de concurrence sur votre paramètre de concurrence (par exemple, envoyer 21 demandes lorsque la concurrence est de 20) rejettera TooManyRequestsException. Je ne suis pas sûr que mon problème de compte soit ou tout comme @nelsonic l'a mentionné: limite par défaut.

Mais quand j'augmente ma simultanéité pas moins de 100, si cela ne fonctionne pas, continuez à augmenter, puis le problème est résolu. J'espère que cela peut vous aider.

2
James