У меня есть непрерывный Webjob, запущенный на моем веб-сайте Azure. Он отвечает за выполнение некоторой работы после извлечения элементов из QueueTrigger. Я пытаюсь увеличить скорость, с которой элементы обрабатываются из очереди. Поскольку я масштабирую свой план обслуживания приложений, скорость обработки увеличивается, как ожидалось.Несколько экземпляров непрерывного Webjob на одной виртуальной машине в Azure
Мое беспокойство состоит в том, что для дополнительных виртуальных машин, похоже, расточительно оплачивать дополнительные экземпляры моего Webjob. Я ищу варианты/лучшие практики для запуска нескольких экземпляров одного и того же Webjob на одном сервере.
Я попытался запустить несколько JobHosts в отдельных потоках в Main(), но либо это не работает, либо я делал что-то неправильно ... Webjob не смог запустить из-за того, что выглядит как каждый поток, пытающийся доступа 'WebJobSdk.marker'. Мое настоящее решение состоит в том, чтобы публиковать мой Webjob несколько раз, каждый раз слегка изменяя «webJobName» в «webjob-publish-settings.json», чтобы тот же проект считался другим Webjob во время публикации. До сих пор это отлично работает, ожидайте, что он создаст много дополнительной работы каждый раз, когда мне нужно сделать какое-либо обновление.
В конечном счете, я ищу несколько советов о том, каким будет рекомендуемый способ достижения этого. В идеале я хотел бы получить несколько экземпляров, запущенных с помощью кода, и только один раз, когда мне нужно будет обновить код.
Любые мысли там?
Спасибо, что предупредили меня об этой новой функции в предстоящей версии. Я уже экспериментировал с BatchSize, а теперь с NewBatchThreshold. Я, кажется, делаю небольшие увеличения, увеличивая порог, и вижу улучшения в очередях, но долгое время поддерживал, имея несколько экземпляров webjob, для меня лучший результат, поэтому я все еще ищу лучший подход для достижения этого. – Gadget27
@ Gadget27 Я как бы в той же ситуации, что и вы. То, что я сделал, было увеличено с BatchSize до 32, а также дублирование WebJob несколько раз в одном экземпляре сервера. В основном копируются коды от MyWebJob до MyWebJob2, MyWebJob3 и MyWebJob4, а затем развертывание всех четырех веб-узлов на экземпляр одного сервера. Таким образом, увеличение BatchSize до 4x32. – minh
@staticmain Я делаю что-то подобное, но я не дублирую код на несколько отдельных проектов webjob. Вместо этого у меня есть один webjob, и я разворачиваю его несколько раз, каждый раз изменяя параметры webjob-publish-settings.json «webJobName», поэтому каждое событие публикации использует уникальное имя. (JobInstanceA, JobInstanceB, JobInstanceC и т. Д.). Конечные результаты должны быть одинаковыми, но, исходя из одного проекта, управление кодом намного проще, чем я подозреваю. – Gadget27