Почему мои экземпляры перезагружаются при попытке сохранить сеансы в кеше Azure?

Я запустил приложение ASP.Net MVC3 и следовал этому практическому руководству по Windows Azure о том, как хранить мои сеансы в совмещенном кеше в Windows Azure.

Я установил упомянутый Nuget-пакет и применил необходимую информацию к своему web.config. Веб-роль настроена на запуск 2 небольших экземпляров и использование 30% кешированного хранилища.

При развертывании в Azure мои экземпляры просто перезагружаются. Через подключение к одному из экземпляров удаленного рабочего стола я обнаружил в журналах эти два события, которые кажутся связанными:

Служба CacheStatusIndicator неожиданно прервалась. Это было сделано 1 раз. Следующее корректирующее действие будет предпринято через 1000 миллисекунд: Перезапустите службу.

Служба CacheService неожиданно прервалась. Это было сделано 1 раз. Следующее корректирующее действие будет предпринято через 60000 миллисекунд: Перезапустите службу.

Однако я не могу найти много информации об этом.

Кто-нибудь знает, что мне здесь не хватает?

2 ответа

Решение

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

  1. Во время отладки этой проблемы я также обновил свое приложение с MVC3 до MVC4. Не уверен, что это как-то связано с решением этой проблемы, но, по крайней мере, это одно из изменений, которые я сделал.
  2. Я заметил, что службой IntelliTrace было сгенерировано еще одно исключение, поэтому я отключил его в развертывании и повторно развернул приложение (я полагаю, что именно эта проблема и стала причиной цикличности экземпляров).

Ответ службы поддержки Microsoft по этому вопросу:

Я устранял неполадки в вашем развертывании с помощью проблемы, и я получил дамп памяти из CacheService.exe

Это было исключение

Тип исключения CLR: System.TypeInitializationException "Инициализатор типа для" Microsoft.ApplicationServer.Caching.AzureCommon.AzureUtility "вызвал исключение". ModLoad: 000007feea010000 000007feea0fa000
D: \ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ diasymreader.dll * ОШИБКА: не удалось найти файл символов. По умолчанию экспортируются символы для D:\windows\system32\KERNEL32.dll - ntdll!ZwWaitForMultipleObjects+0xa: 00000000`76f5739a c3
RET

Исключения в этом пространстве имен могут произойти, если:

  • Вы устанавливаете Microsoft.WindowsAzure.Plugins.Caching.ConfigStoreConnectionString настройка в ServiceConfiguration для использования эмулятора локального хранилища
  • На web.config у вас есть значение идентификатора <dataCacheClients> раздел не установлен на правильное имя роли
  • В некоторых редких случаях, если у вас установлены SDK 1.6 и 1.7 вместе, это может вызвать перепутывание DLL при сборке проекта.

Я очень уверен, что в вашей роли отсутствуют некоторые ссылки, и поэтому вы видите такое сообщение от CacheStatusIndicator. Вы проверили, что в вашей роли установлены все модули / ссылки, настроенные на "копировать локально как истина", поэтому все они являются частью пакета развертывания. В основном это приложение MVC3, вам может потребоваться вручную установить свойство специфических ссылок MVC приложения, чтобы копировать значение local как true для решения этой проблемы.

Другие вопросы по тегам