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?
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.
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!
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.