Ваши экземпляры роли повторно перерабатываются несколько раз во время операции обновления или обновления

Я пытаюсь развернуть облачную службу с 1 веб-ролью в Azure.

Когда я это сделаю, я получаю это сообщение:

Your role instances have recycled a number of times during an update or upgrade operation. This indicates that the new version of your service or the configuration settings you provided when configuring the service prevent the role instances from running. Verify your code does not throw unhandled exceptions and that your configuration settings are correct and then start another update or upgrade operation.

Проект работает нормально, и мне сложно определить, как начать отладку этой проблемы. Существуют ли общие проблемы, вызывающие это сообщение или шаги, чтобы выяснить, что вызывает его?

Ответы

Ответ 2

У нас была аналогичная проблема, и это было связано с тем, что некоторые DDL не смогли загрузить. (из-за разной версии от одной MS развернуты на ВМ)

Попробуйте установить CopyLocal в значение "true" для всех ссылок в проекте и повторно разверните.

Ответ 3

У нас также была эта неприятная проблема, и в нашем случае:

  • Мы используем локальное хранилище, но оно не было определено в определении службы (или свойствах рабочей роли)
  • Наш проект рабочей роли имеет ссылку на проект службы, который ссылается на проект уровня данных. Но проект рабочей роли не имеет ссылки на проект уровня данных. Как только мы добавили ссылку на проект уровня данных в проекте роли пользователя, он успешно развертывается.

Проблема № 1 может быть легко обнаружена, если вы сначала запустите проект на своей локальной машине. Исключение будет выбрано.

Проблема № 2, однако, сложнее, главным образом потому, что она работает нормально на локальной машине. После 5-дневного устранения проблем мы, наконец, нашли проблему. Итак, проверьте все ссылки и попробуйте добавить проекты суб-ссылок, те, на которые ссылаются другие ссылки.

Ответ 4

Я либо удалил бы рабочий стол для экземпляра облака, либо просмотрел журналы событий Windows для исключений или переустановил с помощью IntelliTrace Enabled. Если вы выберете позже, вы можете загрузить журналы IntelliTrace из Visual Studio и отладить

http://msdn.microsoft.com/en-us/library/windowsazure/ff683671.aspx

Ответ 5

Один из способов узнать фактическую ошибку - щелкнуть по "1 экземпляру" в верхней части панели мониторинга после попытки развернуть свою веб-роль. Он покажет вам статус экземпляра роли. Статус должен содержать больше информации о типе ошибки, которая блокирует развертывание.

Это зависит от вашего дела. Для меня статус утверждал, что у меня было необработанное исключение безопасности. После некоторого расследования выяснилось, что под моей ролью OnStart() я попытался создать источник события. Однако служба Azure не имеет права создавать источник событий.

Для получения более точных сведений проверьте http://blogs.msdn.com/b/kwill/archive/2013/09/06/troubleshooting-scenario-3-role-stuck-in-busy.aspx

Ответ 6

Для меня проблема заключалась в моих правилах брандмауэра SQL Azure DB. На моих серверах базы данных Azure SQL не установлено значение "Разрешить доступ к службам Azure", поэтому я должен явно указать IP-адреса, которые разрешены.

Я обнаружил это после упаковки моего кода в try/catch, который проглотил все исключения, рефакторинг моих методов OnStart() и RunAsync() и установку всех моих ссылок на Copy Local = True. Ничего из этого не получилось, тогда я увидел, что у меня есть эта строка в методе RunAsync():

log4net.Config.XmlConfigurator.Configure();

Я использую AdoNetAdapter для log4net и подключаюсь к Azure SQL DB для ведения журнала, поэтому это привело меня к проверке правил брандмауэра.

Ответ 7

Для меня у меня была какая-то другая версия пакетов nuget в моих различных проектах. Как только я объединил все в одну и ту же версию (ы), она отлично работала.

Ответ 8

С выпуском Windows Azure SDK версии 2.2 для Visual Studio 2012 и 2013 теперь можно Удаленные облачные ресурсы отладки в Visual Studio.

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