Поставщик данных Oracle привязывает рабочий процесс IIS при остановке веб-сайта - PullRequest
12 голосов
/ 06 мая 2010

Мы столкнулись с неприятной проблемой в Oracle 11g Release 2, когда процесс w3wp захватывает все ядро ​​процессора, и отладка показывает, что поставщик данных Oracle бесконечно генерирует исключения ThreadAbortExceptions.Разработчик обнаружил эту проблему, выполнив следующие действия:

1) Просмотрите веб-сайт, на котором локально используются подключения к данным Oracle (http://localhost/OracleWebSite) - мы используем IIS, а не сервер разработки ASP.NET для всехнаших сайтов).Это гарантирует, что процесс w3wp запущен и что в пуле приложений существует активный пул соединений Oracle.

2) Остановите веб-сайт (или выполните операцию «Перестроить все» в Visual Studio на соответствующем веб-сайте).).

Наша обработка соединений Oracle в уязвимых приложениях (все веб-приложения Oracle) хорошо отлажена и надежна.Эта проблема не возникает, если мы отключаем пул соединений.Эта проблема не возникает в Oracle 11g Release 1.

Ответы [ 2 ]

14 голосов
/ 26 мая 2010

Все, что вызывает перекомпиляцию (изменение web.config, app_offline.htm, изменение файла .aspx и т. Д.), Приводит к тому, что использование ЦП на ядре максимально увеличивается. Если вы повторите этот процесс, он израсходует максимальную загрузку ЦП на следующем ядре, пока общее использование ЦП не достигнет 100%.

Я подключил windbg к расширениям sos, и похоже, что для каждого ядра с максимальной скоростью 1 поток зависает в System.AppDomain.Unload (System.AppDomain), а другой - в Oracle.DataAccess.Client.OracleTuningAgent.DoScan () .

Первая тема

  • Oracle.DataAccess.Client.OracleTuningAgent.DoScan ()
  • Oracle.DataAccess.Client.OracleTuningAgent.TuningFunction ()
  • System.Threading.ExecutionContext.Run (System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object)
  • System.Threading.ThreadHelper.ThreadStart ()

Вторая нить

  • System.AppDomain.Unload (System.AppDomain)
  • System.Threading.ExecutionContext.Run (System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object)
  • System.Threading._ThreadPoolWaitCallback.PerformWaitCallbackInternal (System.Threading. _ThreadPoolWaitCallback)
  • System.Threading._ThreadPoolWaitCallback.PerformWaitCallback (System.Object)

Похоже, что AppDomain.Unload ожидает в OracleTuningAgent.DoScan завершения, но этот поток заблокирован или находится в спящем режиме.

Oracle подтвердила проблему (ошибка № 9648040), и это является главным приоритетом. Между тем, возможные обходные пути:

  1. Откат к клиенту 11gR1 / ранее
  2. Добавить 'Self Tuning = false' в строку подключения. Вы, конечно, потеряете преимущества автоматической настройки.

-Скотт

8 голосов
/ 13 сентября 2011

Это было решено. Исправление выпущено в Oracle 11.2.0.1.2, который доступен через веб-сайт oracle.com.

К сожалению, в настоящее время это исправление доступно только через учетную запись «Моя поддержка Oracle».

Это было исправлено в 11.2.0.2 и в патче 9966926 ORACLE 11G 11.2.0.1 Ошибка исправления 5 для окон (64-битная AMD64 и INTEL EM64T).

Или ВРЕМЕННОЕ РЕШЕНИЕ: отключить самонастройку, добавив «Self Tuning = false» в строку подключения.

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