2012-04-08 13 views
2

In Java Google App Engine Sie auf gleichzeitige Anforderungen drehen können/Threadmodus: https://developers.google.com/appengine/docs/java/config/appconfig#Using_Concurrent_RequestsWie viel effizienter ist die Java Google App Engine im ThreadSafe-Modus?

Der einzige Grund, dies zu tun, ist, dass der Google-Server weniger Instanzen Ihrer App spin up muß eine bestimmte Anzahl von Anfragen zu bedienen und damit potenziell Geld sparen. Das bedeutet natürlich auch, dass Sie einen Thread-Safe-Code schreiben müssen.

Die interessante Frage ist also: Wie viel Geld spart das? Hat jemand versucht, es unter einer Benchmark-Konfiguration/Anwendungsfunktionalität/-last zu messen?

+0

Hallo. Ich habe eine Analyse von Threadssafe für GAE hier devcon5.blogspot.com veröffentlicht (obwohl für GAE/J) und würde sehr schätzen, Kommentare oder zusätzliche Fragen, die ich abdecken sollte. Vielen Dank. –

Antwort

2

Das hängt wirklich von Ihrem Code:

  1. In dem Einzelanfragemodus, können Sie einfach Anfragen berechnen pro Sekunde: Wenn ein Antrag auf durchschnittlich 100 ms dauert bis zum Ende, dann wird eine Instanz der Lage sein, 10 auszuführen Anfragen pro Sekunde.

  2. In Concurrent Anforderungsmodus hängt von zwei Faktoren ist:

    A. Die Art der Instanz, die Sie verwenden - AFAIK sie alle gleich sind nur Sie unterschiedliche Anzahl der Kerne erhalten. Mehr Kerne bedeutet höhere gleichzeitige Leistung.

    B. Das Verhältnis von CPU-gebundenem Code zu IO-gebundenem Code, den eine Anforderung ausführt. Wenn Ihr Code mehr IO-gebunden ist (= Warten auf Datastore oder andere externe Dienste), kann die CPU mehr davon parallel ausführen.

In meiner app sehe ich 15-20 rps bei 200ms pro Anfrage auf dem Grunde Instanz, so konnte ich sagen, dass der Faktor zwischen Single-Anfrage und Multi-Anforderungsmodus ist etwa 3-4.