2010-10-07 3 views
0

У нас есть рабочая роль, выполняемая в облаке, которая периодически просматривает Azure CloudQueue, периодически получая сообщения, которые веб-роль на них накладывает. В настоящее время рабочая роль и роль веб-сайта размещены в одном приложении Cloud Service, и в настоящее время мы запускаем только один экземпляр.Роль Azure Worker создает непредвиденную ошибку для хранения журнала трассировки

Как мы тестируем, мы включили регистрацию, поэтому содержимое сообщений и другая полезная информация отображаются в нашем облачном хранилище, которое мы просматриваем с помощью Диагностического менеджера Cerebrata Azure. (Отличный продукт).

DiagnosticMonitorConfiguration diagConfig = DiagnosticMonitor.GetDefaultInitialConfiguration();

diagConfig.Logs.ScheduledTransferLogLevelFilter = LogLevel.Verbose;

Все это выглядит очень эффектно, но иногда мы видим сообщение в журнале трассировки, которое просто имеет сообщение «Fail» в качестве сообщения. Код, который, по-видимому, сгенерирован, завернут в попытку catch, поэтому странно, что мы не видим сообщение через эти средства.

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

То, что мы еще не установили, заключается в том, теряем ли мы сообщение.

Любая помощь будет с благодарностью оценена. Приветствия Киндо малайского

ответ

0

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

Например, если вы запустили запрос Azure Table, который вызывает определенные виды ошибок, ошибка будет выведена из системы 3 раза, так как библиотека клиента хранилища обнаруживает ошибку, отслеживает ее и затем повторяет.

Если ошибка не попала в ваш блок catch try, то, скорее всего, вам не о чем беспокоиться.

Если для вас важна доставка сообщений о очередях, вы должны убедиться, что используете перегрузку тайм-аута видимости CloudQueue.GetMessage и только удаляете сообщение, когда закончили его обработку. Вы можете обработать несколько сообщений дважды, но, по крайней мере, вы их обработаете.

0

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

+0

Извините, что не ответил и не поблагодарил людей, которые нашли время ответить на этот вопрос, но мы не решили его, но добились определенного прогресса. Тонкс снова! –

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