У меня есть библиотека 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, молча поглощающий драгоценные циклы процессора.