Я пытаюсь отладить какой-то вредный код MT.Самая недавняя, самая сумасшедшая вещь (после добавления расширенного ведения журналов), по-видимому, заключается в том, что в моем WCF-сервисе с одним компьютером, размещенным на IIS, в начале создается несколько доменов приложений для первых нескольких запросов, а затем каждыйчерез несколько секунд создается еще один.
Каждая строка ниже записывается примерно из следующей трассировки стека:
AddItem (WCF service method)
calls SomeRepositoryClass.Open (instance of class was created for this request)
calls WritePlanBufferManager constructor (static instance), accessed in lock construct (on static readonly object field)
Log (A = AppDomain.CurrentDomain.Id, T = Thread.CurrentThread.ManagedThreadId):
Line 1: [21:21:21.7544122 A:002 T:011] Created new WritePlanBufferManager for appdomain 2
Line 2: [21:21:31.0299427 A:004 T:008] Created new WritePlanBufferManager for appdomain 4
Line 3: [21:21:36.5912608 A:006 T:012] Created new WritePlanBufferManager for appdomain 6
Line 4: [21:21:37.9533387 A:008 T:010] Created new WritePlanBufferManager for appdomain 8
Line 670: [21:21:41.1065191 A:010 T:020] Created new WritePlanBufferManager for appdomain 10
Line 1336: [21:21:43.4236516 A:012 T:020] Created new WritePlanBufferManager for appdomain 12
Line 2002: [21:21:45.8347895 A:014 T:020] Created new WritePlanBufferManager for appdomain 14
Line 2656: [21:21:48.2479276 A:016 T:020] Created new WritePlanBufferManager for appdomain 16
Line 3322: [21:21:50.9600827 A:018 T:020] Created new WritePlanBufferManager for appdomain 18
Line 3988: [21:21:53.2752151 A:020 T:010] Created new WritePlanBufferManager for appdomain 20
Line 4654: [21:21:55.7353558 A:022 T:020] Created new WritePlanBufferManager for appdomain 22
Line 5320: [21:21:58.0414877 A:024 T:007] Created new WritePlanBufferManager for appdomain 24
Line 5984: [21:22:00.5546315 A:026 T:020] Created new WritePlanBufferManager for appdomain 26
Line 6650: [21:22:02.9327675 A:028 T:020] Created new WritePlanBufferManager for appdomain 28
Line 7316: [21:22:05.4109092 A:030 T:020] Created new WritePlanBufferManager for appdomain 30
....many more
Есть множество других вещей, которые я пытаюсь решить, но я хотел бы ограничить свои проблемы одним AppDomain за раз, изначально.
Каждый из этих WritePlanBufferManager
объектов используется для создания нескольких (~ 13) потоков для отложенных / асинхронных очередей и обработки элементов.
Конфигурация службы является стандартным, минимальным, внешнимиз коробки.Web.config практически пуст и не имеет конфигурации WCF.
Пул приложений имеет максимальное количество рабочих процессов = 1, защита от быстрого отказа / запуск / выключение / Ping все отключены.Служба забита запросами от одного клиента, одного потока.
Итак, основной вопрос - почему я получаю несколько доменов приложений, почему часто создаются дополнительные домены приложений?
Обновление : создается впечатление, что мои домены приложений выгружаются и все потоки прерываются через несколько секунд (около одной минуты).Однако в пуле приложений нет ограничений по процессору, время простоя составляет несколько дней, 1 максимальный рабочий процесс, Ping отключен (и время ожидания установлено на несколько дней), защита от быстрой защиты от сбоев отключена, а все параметры повторного использования процессов отключены.
Итак, возникает вопрос, почему выгружаются мои AppDomain (ы) - ничего в журнале событий - и как таковые мои потоки прерываются?