J'ai une fonction lambda qui interroge certaines tables DynamoDB et retourne des entrées dans celles-ci. L'appel à quelques reprises et tout va bien, mais je suis l'accent maintenant tester mon arrière et quand j'invoque cette fonction à plusieurs reprises dans un court laps de temps, je reçois l'erreur suivante:Impossible de créer une nouvelle erreur de thread natif lors de l'appel de la fonction lambda sur la table dynamodb - comment éviter?
"errorMessage":"unable to create new native thread","errorType":"java.lang.OutOfMemoryError"
Je suis En utilisant les capacités d'indexation spatiale de DynamoDB, le message d'erreur semble suggérer qu'une ligne liée à la requête d'index spatial est à l'origine des problèmes. Ce sont les lignes à faire avec la géo: l'interrogation
GeoDataManagerConfiguration config = new GeoDataManagerConfiguration(ddb, "geo");
GeoDataManager geoIndexManager = new GeoDataManager(config);
GeoPoint centerPoint = new GeoPoint(request.latitude, request.longitude);
QueryRadiusRequest queryRadiusRequest = new QueryRadiusRequest(centerPoint, request.radius);
QueryRadiusResult queryRadiusResult = geoIndexManager.queryRadius(queryRadiusRequest);
Plus précisément si la ligne suivante semble être la racine des problèmes:
QueryRadiusResult queryRadiusResult = geoIndexManager.queryRadius(queryRadiusRequest);
Que se passe-t-il? Pourquoi cette ligne lance-t-elle cette erreur lorsque la fonction est appelée à plusieurs reprises? À première vue, il semble que l'indexation spatiale/les recherches sur dynamoDB ne peuvent pas être invoquées en nombres élevés, ce qui n'a vraiment aucun sens, sûrement quand elle a été construite pour gérer l'échelle. Y at-il un réglage où je peux allouer plus de mémoire dans aws pour éviter ce problème?
Je me demande si vous avez considéré le fait que plusieurs demandes consécutives, non simultanées dans une courte période s'exécutent souvent non seulement dans le même conteneur, mais en fait dans le même processus. D'un point de vue de haut niveau, dans cet esprit, ça ressemble moins à dynamodb, et plus comme vous ne nettoyez pas après chaque invocation, et donc la fuite de mémoire ... augmenter ainsi la mémoire disponible n'est pas l'ultime réparer. –