Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 SQL*Net message/data to/from client  [new]
Андрей Лунев
Member

Откуда:
Сообщений: 193
Добрый день всем гуру.

Возник вот такой вопрос. Есть файлы, которые используют PLSExtproc для загрузки файлов на диск. Есть две базы, одна тестовая, другая основная. Сервера одинаковые, разница лишь в количестве ОЗУ, на тесте меньше. Так вот на тестовой схеме программисты подкрутили запросы и загрузка 200 файлов стала делаться быстро, примерно секунд 10. Такие манипуляции на основной схеме не увенчались успехом. 200 файлов грузятся очень медленно, причем возникаю вот такие ожидания SQL*Net message/data to/from client. В какую сторону смотреть? Пробовал создать файл protocol.ora, в котором прописал параметр tcp.nodelay = YES. Сказали, что стало работать медленнее, но это субъективное мнение.
2 окт 17, 14:11    [20836384]     Ответить | Цитировать Сообщить модератору
 Re: SQL*Net message/data to/from client  [new]
Vadim Lejnin
Member

Откуда:
Сообщений: 5646
Загрузка сети какая, какой delay между серверами загрузки и файловыми серверами

и да
автор
...
Есть файлы, которые используют PLSExtproc для загрузки файлов на диск
...

переведи :)
2 окт 17, 14:59    [20836516]     Ответить | Цитировать Сообщить модератору
 Re: SQL*Net message/data to/from client  [new]
SY
Member

Откуда: Middlebury, CT USA
Сообщений: 8624
Если FROM CLIENT, тогда официант (SQL*NET) ждет пока клиент копается в меню (или хавает что официант принес) чтобы передать повару(базе) заказ (следующий заказ) клиента. A вот TO CLIENT это когда официант (SQL*NET) очень долго несет уже приготовленное поваром (базой) блюдо клиенту.

SY.
2 окт 17, 15:01    [20836520]     Ответить | Цитировать Сообщить модератору
 Re: SQL*Net message/data to/from client  [new]
Андрей Лунев
Member

Откуда:
Сообщений: 193
Vadim Lejnin,

Используется внешняя процедура.
2 окт 17, 15:55    [20836690]     Ответить | Цитировать Сообщить модератору
 Re: SQL*Net message/data to/from client  [new]
Андрей Лунев
Member

Откуда:
Сообщений: 193
Vadim Lejnin
Загрузка сети какая, какой delay между серверами загрузки и файловыми серверами


А как этот delay померить? смотрел netstat -i пропусков пакетов нет. В сетевых технологиях не шибко силен...
2 окт 17, 16:02    [20836710]     Ответить | Цитировать Сообщить модератору
 Re: SQL*Net message/data to/from client  [new]
Vadim Lejnin
Member

Откуда:
Сообщений: 5646
Андрей Лунев,

То что используется внешняя процедура я понял, вопрос, куда, как и откуда грузятся файлы.
Судя по вашему сообщению, Вы внешней процедурой загружаете файлы с файловой системы в БД?
Это так?

Если да, Вопрос следующий:
где физически находятся файлы для загрузки? случаем не на сетевом диске?
ну и насколько загружена файловая система с которой Вы грузите файлы.

нагрузку системы мониторили?
Чем отличаются для данной подсистемы стенд и прод?

Ожидания может возникнуть как из-за дисковых задержек (extproc уже передала по TNS порцию в базу, а следующая порция еще не считалась, так и из за задержек сети - чтение ведется с сетевого диска, задержки с передачей по TNS. Такая задержка может возникнуть при значительном ping delay и больших пакетах. Прочитай что такой BDP
например тут:
Oracle Net Services 12c Best Practices for Database Performance and Scalability - секция Network Acceleration
Для передачи больших пакетов при большом delay ping, (тот же RMAN, STANDBY транспорт), обычно поднимают отдельный listener с увеличенным размером буфера для передачи.


p.s. Принято более подробно описывать проблему:
Что за ОС, точная версия СУБД, какие настройки TNS
2 окт 17, 16:27    [20836804]     Ответить | Цитировать Сообщить модератору
 Re: SQL*Net message/data to/from client  [new]
Vadim Lejnin
Member

Откуда:
Сообщений: 5646
Андрей Лунев,
ping remote_server
2 окт 17, 16:27    [20836807]     Ответить | Цитировать Сообщить модератору
 Re: SQL*Net message/data to/from client  [new]
xtender
Member

Откуда: Мск
Сообщений: 4506
http://blog.tanelpoder.com/2008/02/07/sqlnet-message-to-client-wait-gotcha/
2 окт 17, 17:01    [20836924]     Ответить | Цитировать Сообщить модератору
 Re: SQL*Net message/data to/from client  [new]
xtender
Member

Откуда: Мск
Сообщений: 4506
Андрей Лунев,

Покажи сырые трейсы
2 окт 17, 17:02    [20836926]     Ответить | Цитировать Сообщить модератору
 Re: SQL*Net message/data to/from client  [new]
Андрей Лунев
Member

Откуда:
Сообщений: 193
Проблема решена. Добавил настройки в sqlnet.ora на стороне сервера и клиента.
3 окт 17, 10:32    [20838170]     Ответить | Цитировать Сообщить модератору
 Re: SQL*Net message/data to/from client  [new]
Андрей Лунев
Member

Откуда:
Сообщений: 193
Спасибо всем за помощь в решении задачи.
3 окт 17, 10:32    [20838174]     Ответить | Цитировать Сообщить модератору
 Re: SQL*Net message/data to/from client  [new]
Vadim Lejnin
Member

Откуда:
Сообщений: 5646
Андрей Лунев
Проблема решена. Добавил настройки в sqlnet.ora на стороне сервера и клиента.

Андрей, в форуме принято раскрывать решение проблемы, чтобы, те кто словят аналогичную проблему могли самостоятельно ее решить
3 окт 17, 10:57    [20838273]     Ответить | Цитировать Сообщить модератору
 Re: SQL*Net message/data to/from client  [new]
Андрей Лунев
Member

Откуда:
Сообщений: 193
Vadim Lejnin
Андрей Лунев
Проблема решена. Добавил настройки в sqlnet.ora на стороне сервера и клиента.

Андрей, в форуме принято раскрывать решение проблемы, чтобы, те кто словят аналогичную проблему могли самостоятельно ее решить


Без проблем. Просто, часто вижу здесь, что пишут "спасибо за помощь, я все решил", а решения не написано. Вот и я по этому же так написал. А так мне не жалко, пользуйтесь, может кому-то действительно поможет.
На стороне сервера и клиента в sqlnet.ora добавил вот эти строки:
DEFAULT_SDU_SIZE=32767
RECV_BUF_SIZE=65536
SEND_BUF_SIZE=65536


Плюсом почитал вот эти вещи:
https://docs.oracle.com/cd/B19306_01/network.102/b14212/performance.htm
https://sites.google.com/site/embtdbo/wait-event-documentation/oracle-network-waits#TOC-SDU

В listener.ora и tnsnames.ora не стал добавлять, потому что пришлось бы перезапускать листенер, чего не хотелось. Но можно было и так сделать, поэтому ограничился первым вариантом.

Еще раз всем спасибо за помощь и направление в нужное русло...
3 окт 17, 16:06    [20839422]     Ответить | Цитировать Сообщить модератору
 Re: SQL*Net message/data to/from client  [new]
Vadim Lejnin
Member

Откуда:
Сообщений: 5646
Андрей Лунев
Vadim Lejnin
пропущено...

Андрей, в форуме принято раскрывать решение проблемы, чтобы, те кто словят аналогичную проблему могли самостоятельно ее решить


Без проблем. Просто, часто вижу здесь, что пишут "спасибо за помощь, я все решил", а решения не написано. Вот и я по этому же так написал. А так мне не жалко, пользуйтесь, может кому-то действительно поможет.
На стороне сервера и клиента в sqlnet.ora добавил вот эти строки:
DEFAULT_SDU_SIZE=32767
RECV_BUF_SIZE=65536
SEND_BUF_SIZE=65536

...
В listener.ora и tnsnames.ora не стал добавлять, потому что пришлось бы перезапускать листенер, чего не хотелось. Но можно было и так сделать, поэтому ограничился первым вариантом.
...


Андрей, все же крутить такие параметры для всех клиентов, не самые верное решение, бо это может вызвать задержки для задач, которые периодически обмениваются только маленькими, короткими пакетами, например Forms. Особенно, если они работают по медленным линиям.
Плюс, при передаче больших данных с сервера на клиент, возникнет перегруз буферов TCP клиента, у которого не настроены большие буферы, что приведёт к ожиданиям сети при таких операциях.
Более адекватным решением, КМК, было бы все же поднятие выделенного listener на другом порту и настройка специальных TNS Alias, только для тех соединений, которые требуют этого.
Единственно, Вам нужно будет продумать, нужна ли динамическая регистрация служб на нем. Обычно, этого не требуется, для служебных целей как правило используются статическая регистрация, но в принципе это тоже можно настроить.
Основной listener, при этом можно совсем не трогать, и работа с ним останется такой же, как и раньше.

Дополнительно, два listener, позволят ограничить соединения от клиентов, например при создании standby, если остановить основной listener.
Минус в том, что придётся контролировать
3 окт 17, 17:01    [20839650]     Ответить | Цитировать Сообщить модератору
 Re: SQL*Net message/data to/from client  [new]
Андрей Лунев
Member

Откуда:
Сообщений: 193
Vadim Lejnin
Андрей Лунев
пропущено...


Без проблем. Просто, часто вижу здесь, что пишут "спасибо за помощь, я все решил", а решения не написано. Вот и я по этому же так написал. А так мне не жалко, пользуйтесь, может кому-то действительно поможет.
На стороне сервера и клиента в sqlnet.ora добавил вот эти строки:
DEFAULT_SDU_SIZE=32767
RECV_BUF_SIZE=65536
SEND_BUF_SIZE=65536

...
В listener.ora и tnsnames.ora не стал добавлять, потому что пришлось бы перезапускать листенер, чего не хотелось. Но можно было и так сделать, поэтому ограничился первым вариантом.
...


Андрей, все же крутить такие параметры для всех клиентов, не самые верное решение, бо это может вызвать задержки для задач, которые периодически обмениваются только маленькими, короткими пакетами, например Forms. Особенно, если они работают по медленным линиям.
Плюс, при передаче больших данных с сервера на клиент, возникнет перегруз буферов TCP клиента, у которого не настроены большие буферы, что приведёт к ожиданиям сети при таких операциях.
Более адекватным решением, КМК, было бы все же поднятие выделенного listener на другом порту и настройка специальных TNS Alias, только для тех соединений, которые требуют этого.
Единственно, Вам нужно будет продумать, нужна ли динамическая регистрация служб на нем. Обычно, этого не требуется, для служебных целей как правило используются статическая регистрация, но в принципе это тоже можно настроить.
Основной listener, при этом можно совсем не трогать, и работа с ним останется такой же, как и раньше.

Дополнительно, два listener, позволят ограничить соединения от клиентов, например при создании standby, если остановить основной listener.
Минус в том, что придётся контролировать


Спасибо, буду мониторить ситуацию, если будет такая необходимость буду делать, как Вы сказали.
3 окт 17, 17:07    [20839671]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить