2012-05-19 3 views
5

У меня есть рабочая роль, в которой выполняется ряд потоков для обработки соединений с клиентами. Во время нагрузочного тестирования мы заметили, что эта роль становится неактуальной и остается в этом состоянии, пока мы не перезапустим ее. Рассматривая его в отладчике визуальной студии (путем приостановки активного процесса), мы можем видеть, сколько потоков ждет, но когда оно не приостановлено, никаких действий не происходит. Как узнать, что заставляет роль оставаться в этом состоянии?Windows Azure Role Unresponsive

ответ

6

Как вы упомянули, что при выполнении нагрузочного теста возникла проблема с вашей рабочей ролью, можно с уверенностью предположить, что вначале Роль работала нормально. Это приводит к выводу, что проблема скорее специфична для приложения, чем какая-то конкретная платформа. Есть два способа вы можете получить некоторую диагностическую информацию из Windows Azure VM:

  • Вариант 1 (Preferred): Для того, чтобы проверить, что происходит в вашем Azure VM, вам действительно нужно добавить Windows Azure Diagnostics с вашей роли, чтобы вы могли получить счетчик производительности, информацию о памяти, состояние процесса роли и другие данные, перенесенные с Azure VM на ваше Azure Storage, которое вы можете анализировать в автономном режиме.

  • Вариант 2. Включите RDP-доступ к вашей Azure VM, а затем войдите в свою Azure VM и установите Perfmon, Process Explorer и другие инструменты мониторинга работоспособности в вашей Azure VM и отслеживайте, что происходит.

  • Вариант 3 (Last Resort): RDP к вашей Azure VM и установить WinDBG и отладить процесс

хозяина В таком состоянии, когда у вас есть рабочий роль перестал работать, это то, что я действительно предлагаю к любому:

  1. посмотреть на CPU, давление памяти, список потоков и выяснить, какие потоки заблокированы и что может быть причиной.
  2. Посмотрите на работоспособность хост-работника, когда он был запущен в последний раз, по какой-то причине он перерабатывается по какой-либо причине, как долго он работает в Azure VM
  3. Если у вас есть отдельный процесс, который задан как «ProgramEntryPoint» в ваша рабочая роль, проверьте ее работоспособность
  4. Проверьте журнал событий в приложении на системном уровне для любой подсказки. В роли «Рабочий» я не вижу, что в журнале событий приложений будет что-то, но стоит взглянуть.
  5. Я использую Process Monitor для отслеживания нескольких процессов и сбора журнала, чтобы увидеть, когда процесс умирает, что было последним состоянием, к чему он обращался, и был ли он голоден другими проблемами.

Суть в том, что вам действительно нужно выкопать основную причину в Azure VM практически так же, как вы это сделаете на машине на месте.

+0

Спасибо за это, действительно хорошие советы. Сначала этот вопрос был представлен только на роли работника в Azure, но с некоторой настройкой нашего тестового ремня мы начали видеть его в процессе разработки. У нас есть: * Диагностика удаленного доступа/Azure * Счетчики Perf и настраиваемые журналы событий, настроенные для конкретных отчетов для приложения Существует множество мест, где выполняются операции асинхронного сканирования. Мы предполагаем, что существует необработанное исключение, но его оказалось трудно найти. – Irwin

+0

Могу я спросить, какой Azure SDK вы используете? Были некоторые проблемы с Remote Forwarder в более раннем SDK, которые могут вызвать случайные проблемы в Azure, однако SDK 1.6 очень прочен в этом.Что делать, если вы удалите RDP-доступ и Azure Diagnostics с вашим приложением, проблема все еще сохраняется? – AvkashChauhan

Смежные вопросы