Почему подключение к Oracle с использованием Sitecore или Toad через брандмауэр медленнее, чем с использованием SqlPlus?

У меня есть стороннее веб-приложение .Net (Sitecore), которое подключается к базе данных Oracle на сервере в моей демилитаризованной зоне (отделенной от моей локальной сети брандмауэром). Связь между приложением и базой данных медленная. Это не сбой, процесс (называемый публикацией) просто занимает много времени по сравнению с тем же процессом, происходящим между приложением (Sitecore) и базой данных Oracle внутри нашей локальной сети (несколько миллисекунд против 20 минут). Интересно, что я получаю такое же поведение, когда я использую Toad для Oracle для запроса базы данных в DMZ по сравнению с запросом копии базы данных внутри моей локальной сети.

Я воспроизвел настройку в нашей локальной сети, и проблема исчезла. Если я использую базу данных MSSQL, проблема также исчезнет. Если мы не используем Sitecore или Toad, а вместо этого запускаем простые запросы в приложении Oracle sqlPlus, проблема не возникает.

Это указывает мне на то, что проблема характерна для приложений, использующих Oracle Data Provider for .Net, работающих внутри нашей локальной сети и пытающихся выполнить запрос к базе данных Oracle за пределами нашей локальной сети.

ОС: Windows 2008R2 64-разрядная (сервер Oracle DB), Windows 2008 32-разрядная (Sitecore), Win7 64-разрядная (клиенты Toad и SqlPlus). Не уверен, что такое брандмауэр, но я думаю, что это что-то вроде виртуального коммутатора/маршрутизатора (да, я не сетевой парень, как вы догадались?). Оракул 10g. Клиенты используют Oracle.DataAccess 2.102.4.0 или 2.102.5.0 для 64- и 32-разрядных версий. Жаба 10,6. Sitecore — версия 6.2.0, версия 091012.

Я запускал различные мониторы, такие как Wireshark, Procmon и монитор ресурсов Win7, но я не совсем уверен, что ищу. Все, что я вижу, это большие промежутки времени между отправкой и получением, но я не могу определить, где эти промежутки создаются. Для меня это все действительно жутко. По моему опыту, подключение к сети либо работает, либо нет, и если какой-то трафик медленный, то весь трафик медленный.

Любые идеи относительно того, что может вызвать такое поведение? В частности, какие настройки сети/маршрутизатора/брандмауэра могут привести к тому, что соединение (по протоколам TNS и TCP в соответствии с Wireshark) будет работать медленно, но не полностью, для конкретной реализации поставщика данных Oracle?

Смущенный и слегка напуганный,

Джеймс.


person James Gardner    schedule 10.12.2010    source источник


Ответы (1)


Таким образом, ответ заключается в том, что причиной проблемы является используемый нами брандмауэр. Он пытается выполнить глубокую проверку пакетов трафика Oracle (который был обработан провайдером ODP.net), что значительно замедляет сетевой трафик, фактически не останавливая его. Брандмауэр, который работает с другим методом, должен решить проблему. Ребята из Quest (Toad Support) были очень хороши и придумали ответ. Поддержка Oracle была менее полезной. У Quest есть некоторая документация по проблеме, но она находится за порталом поддержки.

person James Gardner    schedule 08.04.2011