ODP.Net OracleConnection.Открытый холодный старт очень медленный ⇐ C#

Место общения программистов C#
Anonymous
ODP.Net OracleConnection.Открытый холодный старт очень медленный

Сообщение Anonymous »

У меня есть служба WebAPI, которая подключается к базе данных Oracle с помощью Oracle.ManagedDataAccess.dll. Каждый раз после сброса пула приложений (или развертывания) первый оператор OracleConnection.Open() имеет длительную задержку. Обычно это около 8 секунд. Последующие вызовы занимают около 0,5 секунды каждый.

Прочитав множество предложений, касающихся ОС сервера и проблем с сетью, я сузил круг вопросов до самого клиента Oracle. Если я удаленно отлаживаю свой код, устанавливаю точку останова для оператора open, а затем запускаю Sysinternals Process Monitor, я могу подтвердить, что первый оператор open выдает 544 записи, второй и последующие тесты создают по 2 записи.
Записи довольно случайны, но в основном относятся к криптографии. Краткий обзор журналов:
  • RegOpenKey, HKLM\SOFTWARE\Microsoft\Cryptography\Defaults\Provider Types\Type 001
  • RegOpenKey, HKLM\SOFTWARE\Microsoft\Cryptography\Defaults\Provider\Microsoft Strong Cryptographic Provider
  • RegSetInfoKey, HKLM\SOFTWARE\Microsoft\Bryptography\MachineGuid >
Они повторяются несколько раз, затем появляются такие разделы, как показано ниже:


[*]RegQueryValue, HKLM\System\CurrentControlSet\WinSock2\Parameters\Protocol_Catalog9
[*]RegCreateKey, HKLM\System\CurrentControlSet\Services\Tcpip\Parameters
[*]RegCreateKey, HKLM\System\CurrentControlSet\Services\DnsCache\Parameters
[*]RegOpenKey, HKLM\SOFTWARE\Policies\Microsoft\Windows NT\DNSClient
< /ul>

Затем следует несколько чтений файла Machine.config, за которыми следует несколько TCP-подключений и получение порта оракула 1521. После этого следует раздел, считывающий часовой пояс из реестра. .

Мой вопрос: почему клиент Oracle делает все это при первом открытии? Могу ли я каким-либо образом заранее определить ответ на некоторые из этих вопросов? (например, настроить часовой пояс, чтобы ему не приходилось «спрашивать» Oracle)?

Подробнее здесь: https://stackoverflow.com/questions/379 ... -very-slow

Вернуться в «C#»