Существует ли жесткое ограничение на продолжительность запуска роли Azure? - PullRequest
6 голосов
/ 06 июня 2011

Предположим, я включил в свою роль Azure довольно продолжительную задачу запуска , которая выполняется примерно до нескольких минут. Что произойдет, если задача запуска выполняется «слишком долго».

В настоящее время я тестирую на Compute Emulator и наблюдаю следующее.

У меня есть 450-мегабайтный ZIP-файл вместе с Info-Zip unzip . Задача запуска распаковывает архив. Развертывание начинается, и я смотрю в диспетчере задач. Запускаются многочисленные сервисные процессы, затем запускается unzip.exe. Примерно через две минуты все эти процессы останавливаются, а затем запускаются заново, и снова запускается unzip.exe.

Похоже, что развертыванию разрешено запускаться около двух минут, затем принудительно сбрасывается и запускается снова.

Это ожидаемое поведение? Это сохраняется в реальном облаке? Есть ли какие-то жесткие ограничения на то, сколько времени может занять запуск стартапа? Как мне справиться с этой ситуацией, кроме перемещения распаковки в RoleEntryPoint.OnStart()?

Ответы [ 4 ]

7 голосов
/ 26 июля 2011

У меня был тот же вопрос, поэтому попробовал эксперимент. Я запустил задачу запуска - taskType = "simple", чтобы она блокировала выполнение ролей с начала выполнения - и позволила ей работать в течение 50 часов. Контроллер фабрики не жаловался, и портал не показывал никакой ошибки. Он завершил свой длинный цикл «ничего не делать» по истечении 50 часов, затем эта задача запуска завершилась, и моя веб-роль запустилась нормально.

Итак, мой эмпирический тест говорит, что задачи запуска могут занять много времени! Не менее 50 часов.

2 голосов
/ 06 июня 2011

Это должно сообщить балансировщику нагрузки, что ваш процесс все еще занят:

http://msdn.microsoft.com/en-us/library/microsoft.windowsazure.serviceruntime.roleinstancestatuscheckeventargs.setbusy.aspx

1 голос
/ 07 июня 2011

Я запускаю задачи запуска, которые выполняются довольно долго (например, 20-30 минут), и роль просто находится в состоянии «Занят». Я не думаю, что существует жесткое ограничение на то, как долго роль будет оставаться в этом состоянии, пока задача запуска все еще выполняется и не завершается с ненулевым кодом возврата (на самом деле, для большинства Создатели запуска при первом запуске, когда они выдают подсказку). ФК технически все еще работает просто отлично, поэтому не было бы никакой причины «восстанавливать» роль (т. Е. Сердцебиение все еще продолжается).

Эмулятор разработчика просто замечает, когда роль еще не началась, и предупреждает вас. Если вы нажмете «Продолжить ожидание», он продолжит выполнение задачи запуска до завершения. Облако, конечно, этого не делает (предупреждаю).

Никогда не пытался выполнить задачу, которая выполнялась очень долго, поэтому может быть очень длинный лимит. Кажется, я вспоминаю, что 3 часа были магическим числом в некоторых случаях тайм-аута, таких как повторение ролей, но я никогда не пробовал ...

0 голосов
/ 06 июня 2011

Есть несколько тактовых импульсов, которые агент Azure Fabric Agent сделает против этой роли.Если они не подтверждены (скажем, длительный процесс блокировки), это может привести к тому, что роль будет помечена как недоступная.

Вы можете попытаться поместить процесс запуска в фоновый поток, который выполняется независимо.Это должно помочь вам избежать повторного использования роли во время запуска процесса.Просто имейте в виду, что вам может потребоваться внести некоторые коррективы, если вы получите запросы до того, как роль полностью запустится.Есть также способ (который я не могу вспомнить ATM) пометить роль и временно вынуть ее из балансировщика нагрузки, пока ваш процесс завершается.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...