Устранение неполадок веб-служб ASP.NET? - PullRequest
1 голос
/ 23 августа 2009

Работая с одним из наших партнеров, мы разработали два отдельных набора веб-сервисов для их использования. Первым был простой веб-сервис в стиле «публикация на https URL», которому мы способствовали, создав веб-страницу в ASP.NET, которая проверяла аргументы в URL и затем действовала соответствующим образом. Этот «веб-сервис» (если можно так назвать) был очень стабильным.

В какой-то момент партнер попросил нас начать использовать веб-сервисы на основе SOAP. По их просьбе мы создали новый набор веб-сервисов, в значительной степени основанный на предыдущих объектах, переопределенный как настоящий «веб-сервис». Этот веб-сервис не очень стабилен: примерно раз в неделю Nagios будет предупреждать нас, что наш веб-сервис не отвечает - и быстрый iisreset помогает.

Анализ вывода журнала и работа в отладчике не привели нас к чему-то конкретному. Объем на этом новом веб-сервисе на самом деле намного ниже, чем на веб-сервисе HTTP. Я думаю, что это может быть проблема кода или платформы, или, конечно, что-то среднее.

Мы попробовали, с небольшим улучшением:

  • Для дублирования поведения в лаборатории
  • Отладка в отладчике Visual Studio
  • Работа с опциями IIS для создания собственного пула приложений

Мой вопрос, каковы дальнейшие действия по устранению неполадок?

Окружающая среда: Windows Server 2003 Standard Edition R2 с пакетом обновления 2 (SP2), 32-разрядная версия, Visual Studio 2005, MS SQL 2005, .NET Framework 2.0.50727

Ответы [ 2 ]

1 голос
/ 23 августа 2009

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

Когда веб-служба перестает отвечать, как происходит использование памяти? У нас возникли проблемы с памятью и фрагментацией памяти, связанной с загруженными веб-службами в системе (были и другие проблемы, вызывающие дополнительную фрагментацию). Когда мы переориентировали веб-сервисы на загрузку из небольших библиотек DLL и зависели от других библиотек (вместо одной большой библиотеки), мы смогли разрешить фрагментацию памяти.

Чтобы определить, что происходит, мы извлекли бы дамп из рабочего процесса iis, на котором находился пул приложений, в котором находился пул приложений, а затем проанализировали его с помощью WinDbg. http://www.microsoft.com/whdc/devtools/debugging/default.mspx

Кроме того, мы использовали DebugDiag для получения дампов после смерти. http://www.iis.net/downloads/default.aspx?tabid=34&g=6&i=1286

Надеюсь, что это дает другое направление для взгляда.

1 голос
/ 23 августа 2009

Вы можете получить ответы на некоторые вопросы, представив свои веб-сервисы и поняв, как они используют свои ресурсы. perfmon и procmon являются очень полезными инструментами в этом отношении.

РЕДАКТИРОВАТЬ: Поскольку вы говорите, что ошибки происходят примерно через неделю, единственное, о чем я могу думать, это использование ресурсов. Убедитесь, что ваши соединения с БД очищаются, а все открытые файлы (системный вызов exe) закрываются.

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

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