2016-07-16 8 views
1

Ich verwende derzeit die Bibliothek dynamoose, um DynamoDB in Node.js zu behandeln. Ich habe einige Tests darüber durchgeführt, warum meine Express-Anfragen in einigen Fällen 1000+ ms benötigen, und habe es auf die Dynamoose-Funktionen hingewiesen. Wenn Sie scannen oder speichern, dauert es ungefähr 240ms für jede dieser Anfragen. Wenn ich also ein paar von denen in einer Funktion machen muss, kann es lange dauern.Amazon Web Services DynamoDB Anfragen langsam

Laut AWS bin ich weit unter meiner bereitgestellten Lese- und Schreibkapazität. Read and Write capacity

Auch eine meiner Tabellen zeigt 10-40ms Scan und setzen Latenz. Das scheint nicht schlecht zu sein aber scheint immer noch etwas hoch (könnte ganz normal tho sein).

Put and Scan latency

Alle Ideen, wie die Geschwindigkeit, dies zu verbessern alle so 240ms meine DB-Anfragen nehmen Sie nicht?

Antwort

1

Mit einem Scan wird alles in einer Tabelle abgerufen. Je nachdem, wie groß der Tisch ist, kann es eine Weile dauern, bis alles fertig ist.

Die Scan-Latenz, die Sie hier sehen, bezieht sich auf 1 Scananforderung auf dem Server (die Netzwerk- oder Clientlatenz wird nicht berücksichtigt).

Um alles in der Tabelle greifen normalerweise Sie mehrere Scan-Anfragen durchführen

Sie müssen auch schauen und sehen, ob Sie Keep-Alive (es eine obere von der Größe der Daten, die zurückkommen kann 1MB IIRC gebunden ist) haben aktiviert in dem SDK, das Sie verwenden (dh wenn Sie eine Verbindung wiederverwenden oder eine neue öffnen) und überlegen, wie weit Sie von der AWS-Region entfernt sind (wenn Sie den Code nicht auf einer EC2-Instanz in derselben Region ausführen DDB, das Sie verwenden, sehen Sie eine Strafe für die Netzwerklatenz).

+0

Ok zur Zeit habe ich nur wie 1 Sache in der Tabelle. Die Netzwerklatenz könnte das Problem sein. Ich benutze meinen lokalen Computer und befindet sich in CO und die DynamoDB ist in der Region Oregon. So könnte trotzig das Problem sein. Wie ich Fehler2007s sagte, da ich Dynamoose verwende, wird es ein bisschen mühsam sein zu finden, wo sie diese Keepalive-Funktion implementieren. Also muss ich eine einfache Möglichkeit finden, das Knotenpaket zu bearbeiten und sogar herauszufinden, wo dieser Code ist. Danke für deine Hilfe. –

1

Standardmäßig ist keepAlive im Knoten nicht aktiviert. Wenn Sie dies aktivieren, sollten Sie die Dinge beschleunigen, da vorhandene Sockets wiederverwendet werden. Macht es Ihnen etwas aus, diese Option zu testen? Dazu können Sie Ihren DynamoDB-Client mit den folgenden Optionen instanziieren:

var dynamo = new AWS.DynamoDB({ 
    region: "ap-southeast-2", 
    httpOptions: { 
    agent: new https.Agent({ 
     rejectUnauthorized: true, 
     keepAlive: true 
    }) 
    } 
}); 
+0

Ok, lass mich versuchen, daran zu arbeiten. Super hart, da ich Dynamoase verwende, um diese Anfragen zu bearbeiten, also muss ich in ihren Code gehen und herausfinden, wo sie diesen Code haben und diesen aktualisieren. Ich werde dich wissen lassen, wenn ich herausfinde, wo das ist. –

+0

wie man httpoptions in aws-sdk hinzufügt – Prabhas