Служба WCF, размещенная в Windows Служба работает в 10 раз медленнее, чем консольное приложение

У меня есть библиотека C #, которая выполняет некоторую обработку файлов. Я создал консольное и настольное приложение, которое использует библиотеку и обрабатывает файл размером 256 МБ примерно за 1 минуту. Затем я создал службу WCF, размещенную в службе Windows, которая использует ту же библиотеку обработки файлов, но для обработки того же файла размером 256 МБ при вызове с веб-сайта требуется в 10 раз больше времени. Служба Windows работает под учетной записью домена с правами администратора.

Накладные расходы на вызов службы WCF очень быстрые, но метод LoadFile занимает гораздо больше времени. Я попытался увеличить приоритет процесса во время запуска через

Process.GetCurrentProcess ().PriorityClass = ProcessPriorityClass.High;

, но безрезультатно. Я запускал эту службу на 64-битной настольной системе Win7 (6 ГБ), 32-битном сервере 2003 XP (4 ГБ) и 32-битном сервере 2008 R2 (4 ГБ), все с аналогичными результатами. Каждое из консольных и настольных приложений обрабатывает файл примерно за 1 минуту в указанной выше системе. Процесс, похоже, не ограничен памятью и не входит в swapville.

Ограничены ли процессы службами Windows каким-либо образом? Могу ли я получить лучшие результаты, запустив службу WCF под IIS?

РЕДАКТИРОВАТЬ: Я попытался вызвать каталог библиотеки с веб-сайта, и это тоже занимает в 10 раз больше времени, чем консольное или настольное приложение.

ОБНОВЛЕНИЕ: Оказывается, это был Log4PostSharp. Консольные и настольные приложения не имели никаких следов log4net в файлах конфигурации, в отличие от веб-сайта и службы Windows. Log4net TraceAppender молча поглощал драгоценные циклы процессора.

10
задан Todd Smith 8 March 2011 в 18:45
поделиться