Wie können die inkonsistenten und langsamen Reaktionszeiten von Google Cloud Storage behoben werden?

9

Ich verwende Google Cloud Storage, um einige Dateien zu speichern und abzurufen, und mein Problem ist, dass die Antwortzeiten, die ich erhalte, inkonsistent und manchmal sehr langsam sind.

Meine Anwendung ist eine ASP.NET Core App, die in der Google Container Engine ausgeführt wird. Der Container Engine-Cluster befindet sich in europe-west1-c . Der Cloud Storage-Bucket ist Multi-Regional mit dem Speicherort EU und ein sicherer Bucket (nicht öffentlich zugänglich). Ich verwende die neueste Version des offiziellen Google.Cloud.Storage.V1 SDK-Pakets, um auf den Cloud Storage zuzugreifen. (Ich probierte sowohl 1.0.0 als auch die neue 2.0.0-beta01 .) Ich benutze eine Singleton-Instanz des StorageClient -Objekts, das Verbindungspooling unter der Haube machen sollte.

Ich vermesse und protokolliere die Zeit, die benötigt wird, um eine Datei aus dem Cloud Storage herunterzuladen, dies ist die Messung, die ich mache.

%Vor%

Ich messe also direkt den SDK-Aufruf ohne eigene Anwendungslogik.

Die Zahlen, die ich für diese Messung erhalte, sehen in einem durchschnittlichen Zeitraum so aus.

%Vor%

Sie können sehen, dass die Varianz bereits sehr groß ist (und die Antwortzeit oft sehr langsam ist).

Aber manchmal bekomme ich sogar Antwortzeiten wie diese (die langsamste, die ich gesehen habe, war über 10 Sekunden).

%Vor%

Das ist wirklich schlimm, wenn man bedenkt, dass die heruntergeladene Datei ~ 2 KB groß ist und meine Anwendung weniger als 1 Anfragen pro Sekunde ausführt und meine Anwendung innerhalb der Google Cloud ausgeführt wird. Ich denke nicht, dass der Eimer, der nicht aufgewärmt wird, ein Problem sein kann, da ich hauptsächlich die gleiche Handvoll Dateien herunterlade, und ich mache mindestens ein paar Anfragen jede Minute.

Weiß jemand, was der Grund für diese Langsamkeit sein kann, oder wie ich herausfinden könnte, was schief läuft?

Update : Nach dem Vorschlag von @ jterrace habe ich gsutil perfdiag in der Produktionsumgebung ausgeführt und sowohl die Terminalausgabe als auch den generierten JSON-Bericht hier .

Ich habe auch einige weitere Messungen gesammelt, hier können Sie die Statistiken der letzten sieben Tage sehen.

Sie können also sehen, dass langsame Anfragen nicht oft vorkommen, aber mehr als eine halbe Sekunde Reaktionszeit ist nicht selten, und wir haben sogar täglich eine Handvoll Anfragen über 5 Sekunden.

Was ich herausfinden möchte, ist, ob wir etwas falsch machen, oder das wird mit Cloud Storage erwartet, und wir müssen darauf vorbereitet sein, mit diesen langsamen Reaktionen auf unserer Seite umgehen zu können.

    
Mark Vincze 15.06.2017, 13:49
quelle

2 Antworten

2

Wir haben das gleiche Problem mit GCS. Die einzige Antwort, die wir bekommen (von der GCS-Unterstützung), ist die Verwendung exponentiellen Backoff. Die erste Anfrage sollte 200ms Zeitüberschreitung haben, dann versuche 400ms und so weiter.

    
RanP 11.07.2017, 08:19
quelle
0

Ein häufiges Problem, das ich in GCE gesehen habe, ist, dass aufgrund von gcloud-Clients, die eine starke DNS-Abhängigkeit haben, dieser Verkehrsstau durch DNS-Abfragen gedrosselt wird, nicht die tatsächlichen Clients (Speicher oder andere). Ich empfehle dringend, dass Sie Ihrem Container "etcd" oder einen anderen DNS-Cache hinzufügen. Jede echte Menge an Verkehr in GCE wird sonst ersticken.

    
Aaron 02.01.2018 00:27
quelle