2012-04-05 3 views
0

Wie können Push-Warteschlangentasks nach dem Einreihen so schnell wie möglich zur Ausführung geplant werden?Vermeiden von Ausführungsverzögerungen in Aufgabenwarteschlangen

Müssen wir stattdessen auf Cron-Jobs mit Pull-Warteschlangen zurückgreifen?

Wir sehen regelmäßig sehr lange Verzögerungen (20 Minuten) beim Ausführen von Aufgaben, die in unseren Push-Warteschlangen warten. Wir werden mehr als 6.000 Aufgaben in der Warteschlange sehen, von denen keine ausgeführt und in letzter Minute nicht ausgeführt wird. Dann werden die Tasks endlich ausgeführt und wir bekommen einen großen Burst-Spike, wenn die Warteschlange schnell leer ist.

Als Beispiel sieht eine Warteschlange Definition wie folgt:

<queue> 
    <name>example</name> 
    <target>1</target> 
    <rate>20/s</rate> 
    <bucket-size>40</bucket-size> 
    <max-concurrent-requests>10</max-concurrent-requests> 
    <retry-parameters> 
     <min-backoff-seconds>10</min-backoff-seconds> 
     <max-backoff-seconds>60</max-backoff-seconds> 
     <max-doublings>2</max-doublings> 
    </retry-parameters> 
</queue> 

Antwort

1

Verzögerungen können mit beiden Pull-Warteschlangen auftreten und Push-Warteschlangen. Aufgabenwarteschlangen bieten eine zuverlässige Aufgabenausführung, die niemals früher als angefordert, sondern manchmal später erfolgt, beispielsweise beim Failover von einem Rechenzentrum zu einem anderen. Die Planung ist Best-Effort, nicht Echtzeit.

+0

Wir sehen gerade 2 Stunden Verzögerungen in Push Queues. @Eric - warum hätten Pull Queues eine Verzögerung? Ich dachte, ein dediziertes Backend könnte beliebig viele gewünschte Teile bearbeiten, ohne von der GAE-Aufgabenplanung abhängig zu sein. –

+0

@Caster - Auch bei Pull-Warteschlangen muss das System die Aufgaben verfolgen, die hinzugefügt, geleast und gelöscht wurden. Wie schreibgeschützte Zeiträume in einem Master/Slave-Datenspeicher gibt es Zeiten, zu denen keine Leases ausgegeben werden. –