2017-08-02 1 views
2

Actuellement, j'utilise AWS Lambda pour mon application interne pour les appels d'application à l'aide de la structure Spring implémentée avec jrestless.AWS ApiGateway Latence Problème

Demande d'appel d'application fonctionne parfaitement avec une latence décente (~ 10-15ms idéalement)

Mais quand je suis en train de tirer parti de même fonction lambda via l'API passerelle le temps de latence pousses jusqu'à 700-800 ms. Même si ma fonction lambda prend le même 10-15 ms.

Lambda Fonction Configurations:

VPC: open(no vpc) 
Region: ap-south-1(Mumbai) 
Memory: 1500 MB(Highest) 
Timeout: 5 min(Highest) 

passerelle API Configurations:

Region: ap-south-a(Mumbai) 
Request Integration: proxy+ 
Request Method: ANY 

Aucune authentification est utilisé et son un appel HTTPS.

Est-ce que quelqu'un a rencontré un problème similaire?

+0

Absolument. 900-1200ms était typique pour moi, même avec une fonction Lambda préchauffée (ce qui est un problème de red herring de mon point de vue) pour un équivalent "Hello World" retournant JSON (leur exemple de magasin pour animaux de compagnie), de la région * mien. Pendant ce temps, un programme de serveur simple que j'ai écrit fonctionnant sur une micro-instance EC2 1) renvoyant des données de RDS, qui devrait être encore plus lent, dans 2) la région la plus éloignée de moi, était généralement de 600ms aller-retour au maximum. la moitié du temps de réponse et généralement moins. Les réponses des représentants d'AWS sur des questions comme celle-ci ont été moins que satisfaisantes. – SexxLuthor

Répondre

1

J'ai aussi des problèmes de latence avec la passerelle API mais je n'ai pas de chiffres exacts à ce sujet. Cependant, à partir de maintenant, la passerelle API a un problème de latence et c'est un problème permanent.

https://forums.aws.amazon.com/thread.jspa?threadID=225458

Selon les ingénieurs, je pense 700ms est un peu plus élevé. Juste au cas où il y a une autre préoccupation avec lambda comme démarrage à chaud et démarrage à froid. quand vous appelez d'abord la latence de lambda est peu élevé. Et il y a deux solutions de contournement pour surmonter cela comme mentionné dans le blog suivant poster

https://serverless.com/blog/keep-your-lambdas-warm/

+0

Je n'ai aucun problème avec le démarrage à froid lambda. J'ai déjà planificateur en place pour garder ma fonction lambda opérationnel. Mais à cause de la latence de la passerelle API, je ne peux pas aller vivre avec l'environnement de production. – nikhil1265

+0

Je viens de vérifier la latence minimale que nous avons atteinte dans une de nos api gateway api, et c'est 260ms. Cependant j'ai trouvé et une réponse donnée par un ingénieur de passerelle api. https://stackoverflow.com/questions/41865304/can-will-aws-api-gateway-lambda-performance-be-improved. Malheureusement c'est tout ce que j'ai à partir de maintenant – Asanka

1
  1. Si vous êtes curieux où le temps d'attente est introduit, la passerelle API fournit deux mesures CloudWatch: Latency et IntegrationLatency. Latency est la latence totale côté serveur enregistrée par API Gateway et IntegrationLatency est uniquement la latence de la demande/réponse principale. La différence entre ces deux métriques est le surdébit côté serveur API Gateway. Toute différence entre la latence côté client et la métrique Latency sera la latence réseau/TLS/de connexion.
  2. Nous avons récemment lancé le type de noeud final 'régional' qui est une option pour les cas d'utilisation où le client se trouve dans la même région AWS que l'API elle-même. Cela devrait rapprocher votre latence de ce que vous obtenez lorsque vous appelez Lambda directement.
  3. Latence généralement améliorer avec le volume
  4. Lambda lui-même toujours en tête, et ils ne pas exposer la surcharge côté serveur (contrairement à la passerelle API). Le duration exposé par Lambda est uniquement la durée de la fonction pour laquelle vous êtes facturé. Il n'indique pas la latence totale.