Ist die CPU-Bandbreite bei Google App Engine einfach zu teuer oder ist es mein Code?

9

Ich wollte die GAE-Leseleistung messen. Etwa 10.000 Entitäten werden aus dem Datenspeicher geholt. Diese Entitäten enthalten 3 Eigenschaften Name (ca. 16 Zeichen), Beschreibung (ca. 130 Zeichen) und einen Zeitstempel. Nichts ungewöhnlich groß.

Folgendes sehe ich:

Im Durchschnitt dauert es ungefähr 11 Sekunden, um 10k-Entitäten zu lesen. Nicht sicher, ob dies als schnell, langsam oder sinnvoll angesehen wird, aber es ist nicht zu aufregend.

Interessanter ist die CPU-Messung. Die 100-malige Ausführung dieser Leseoperation verbraucht ungefähr 3,0 CPU-Stunden. Die Kosten betragen 0,30 $.

Da es hier keinen CPU-intensiven Algorithmus gibt, macht es die CPU-Bandbreite von GAE nicht ziemlich teuer? (Sicher, es kommt mit 24/7 sys-Admins in Form von Python-Skripten usw., aber immer noch ...)

Oder ist das etwas in meinem Java-Code:

Ссылка

    
akirekadu 27.08.2010, 15:31
quelle

1 Antwort

5

Es ist nicht dein Code, ich glaube dein Ergebnis. In unseren eigenen Experimenten haben wir herausgefunden, dass das Retrieval und (insbesondere) die Speicherung sehr kostspielige Operationen in Bezug auf die CPU-Quote sind.

Wir haben folgendes festgestellt:

  • Indizes sind teuer. Wenn Sie mehr schreiben als lesen, seien Sie mit Ihren Indexen geizig. Stellen Sie sicher, dass Sie das Attribut indexed=False für Modelleigenschaften kennen und achten Sie genau darauf, was automatisch in index.yaml generiert wird.

  • Wenn Sie mehr lesen als Sie schreiben, können viele Multi-Indizes sinnvoll sein. Verwenden Sie Memcache, wo Sie können. Verwenden Sie Entitätsgruppen, wenn sie sinnvoll sind.

  • Die app engine API bietet Ihnen Tools zur Verbesserung der Effizienz. Sie sind sehr wichtig. Wenn Sie 100 Zeilen schreiben, reduziert die Verwendung eines einzelnen Massen-Put () vs. 100 einzelnen put () - Aufrufs die CPU-Nutzung erheblich.

Wenn Ihre App wie beschrieben große Lesevorgänge durchführt, möchten Sie möglicherweise eine andere Lösung (z. B. ein VPS wie Slidehost oder Linode) oder ein anderes Datenmodell auswählen. Jede App wird unterschiedliche Bedürfnisse haben, WRT-Disk, CPU, Speicher, usw., so dass ich die zurückliegenden Umschlagsberechnungen als eine Übung für den Leser belasse.

HTH!

    
Max 29.08.2010 17:38
quelle