2016-06-10 24 views
7

Wiem, że webjob skaluje się z webappem, np. Jeśli moja aplikacja internetowa działa na 5 instancjach, to webjobs będzie działał również na 5 instancjach. Po prostu chcę wiedzieć, czy istnieje sposób na posiadanie wielu wystąpień webjob w każdej instancji witryny.Jak skalować Webjobs na Azure Jak skalować Webjobs Azure

Uwaga: Mam max wartość JobHostConfiguration.QueuesConfiguration.BatchSize = 32 już.

Teraz moja aplikacja działa na 1 instancji. Webjobs przetwarza 32 jednocześnie. Moim celem jest jednoczesne przetwarzanie 3 * 32 = 96.

Jednym z możliwych sposobów osiągnięcia tego celu może być wdrożenie tych samych webjobs 3 razy (ustawienie innej nazwy dla właściwości webJobName), ale nie jestem pewien, czy to będzie dobra praktyka. Proszę wskazać mi odpowiednią dokumentację.

  1. Co config.Queues.NewBatchThreshold wskazać?

  2. Jaka jest wartość domyślna dla config.Queues.NewBatchThreshold?

  3. Dla przetwarzania kolejki jaka powinna być zalecana wartość dla config.Queues.NewBatchThreshold?

Odpowiedz

6

Kopiowanie odpowiedź Jona z https://github.com/Azure/azure-webjobs-sdk/issues/628:

NewBatchThreshold jest liczba wiadomości, które opuściły przetwarzać w partii przed SDK odświeża partię.

Na przykład, jeśli wielkość partii wynosi 20, a wartość NewBatchThreshold wynosi 5, zestaw SDK za każdym razem pobierze 20 wiadomości z kolejki, przekazuje je do kodu, aby można było przetwarzać je jeden po drugim, a następnie, gdy spadnie do w ciągu ostatnich 5 nieprzetworzonych wiadomości (przetworzyłeś 15) pobierze następne 20. See here w sekcji "Równoległe wykonanie"

Domyślnie NewBatchThreshold ma połowę wartości BatchSize (see source code) i dlatego widzisz wartość 0 w przypadku wielkości partii 1.

Pamiętaj, że chcielibyśmy sprawić, aby było to mniej kłopotliwe, zgodnie z this issue I właśnie opended.

+1

Co z pierwszym pytaniem? Jeśli moja potrzeba biznesowa to przetwarzanie więcej niż 32, czy istnieje jakiś sposób, aby przetworzyć więcej niż w jednym przypadku? Jak uruchomić 96 lub więcej jednocześnie w tym samym czasie. Szukasz dobrej dokumentacji opisującej najlepszą praktykę skalowania. –

+0

Maksymalna liczba zadań wykonywanych równolegle kończy się na wartości 'NewBatchThreshold + BatchSize'. Więc ustawiając 'NewBatchThreshold' na wyższy numer, możesz to osiągnąć. –

+0

@ArifulHaque Myślę, że najlepszą praktyką skalowania jest posiadanie więcej niż jednej instancji webjob (witryny) ... Nakładanie ograniczenia na pojedyncze wystąpienie prawdopodobnie narusza najlepszą praktykę. W każdym razie prawdopodobnie można osiągnąć BatchSize> 32, jeśli zaimplementowano wiele funkcji uruchamianych w kolejce, które robią to samo. – Matt

Powiązane problemy