Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / SQL*Net message/data to/from client / 15 сообщений из 15, страница 1 из 1
02.10.2017, 14:11
    #39529394
SQL*Net message/data to/from client
Добрый день всем гуру.

Возник вот такой вопрос. Есть файлы, которые используют PLSExtproc для загрузки файлов на диск. Есть две базы, одна тестовая, другая основная. Сервера одинаковые, разница лишь в количестве ОЗУ, на тесте меньше. Так вот на тестовой схеме программисты подкрутили запросы и загрузка 200 файлов стала делаться быстро, примерно секунд 10. Такие манипуляции на основной схеме не увенчались успехом. 200 файлов грузятся очень медленно, причем возникаю вот такие ожидания SQL*Net message/data to/from client. В какую сторону смотреть? Пробовал создать файл protocol.ora, в котором прописал параметр tcp.nodelay = YES. Сказали, что стало работать медленнее, но это субъективное мнение.
...
Рейтинг: 0 / 0
02.10.2017, 14:59
    #39529425
Vadim Lejnin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SQL*Net message/data to/from client
Загрузка сети какая, какой delay между серверами загрузки и файловыми серверами

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

переведи :)
...
Рейтинг: 0 / 0
02.10.2017, 15:01
    #39529428
SY
SY
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SQL*Net message/data to/from client
Если FROM CLIENT, тогда официант (SQL*NET) ждет пока клиент копается в меню (или хавает что официант принес) чтобы передать повару(базе) заказ (следующий заказ) клиента. A вот TO CLIENT это когда официант (SQL*NET) очень долго несет уже приготовленное поваром (базой) блюдо клиенту.

SY.
...
Рейтинг: 0 / 0
02.10.2017, 15:55
    #39529495
SQL*Net message/data to/from client
Vadim Lejnin,

Используется внешняя процедура.
...
Рейтинг: 0 / 0
02.10.2017, 16:02
    #39529500
SQL*Net message/data to/from client
Vadim LejninЗагрузка сети какая, какой delay между серверами загрузки и файловыми серверами

А как этот delay померить? смотрел netstat -i пропусков пакетов нет. В сетевых технологиях не шибко силен...
...
Рейтинг: 0 / 0
02.10.2017, 16:27
    #39529520
Vadim Lejnin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SQL*Net message/data to/from client
Андрей Лунев,

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

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

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

Ожидания может возникнуть как из-за дисковых задержек (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
...
Рейтинг: 0 / 0
02.10.2017, 16:27
    #39529521
Vadim Lejnin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SQL*Net message/data to/from client
Андрей Лунев,
ping remote_server
...
Рейтинг: 0 / 0
02.10.2017, 17:01
    #39529546
Sayan Malakshinov
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SQL*Net message/data to/from client
...
Рейтинг: 0 / 0
02.10.2017, 17:02
    #39529547
Sayan Malakshinov
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SQL*Net message/data to/from client
Андрей Лунев,

Покажи сырые трейсы
...
Рейтинг: 0 / 0
03.10.2017, 10:32
    #39529915
SQL*Net message/data to/from client
Проблема решена. Добавил настройки в sqlnet.ora на стороне сервера и клиента.
...
Рейтинг: 0 / 0
03.10.2017, 10:32
    #39529918
SQL*Net message/data to/from client
Спасибо всем за помощь в решении задачи.
...
Рейтинг: 0 / 0
03.10.2017, 10:57
    #39529955
Vadim Lejnin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SQL*Net message/data to/from client
Андрей ЛуневПроблема решена. Добавил настройки в sqlnet.ora на стороне сервера и клиента.
Андрей, в форуме принято раскрывать решение проблемы, чтобы, те кто словят аналогичную проблему могли самостоятельно ее решить
...
Рейтинг: 0 / 0
03.10.2017, 16:06
    #39530262
SQL*Net message/data to/from client
Vadim LejninАндрей ЛуневПроблема решена. Добавил настройки в sqlnet.ora на стороне сервера и клиента.
Андрей, в форуме принято раскрывать решение проблемы, чтобы, те кто словят аналогичную проблему могли самостоятельно ее решить

Без проблем. Просто, часто вижу здесь, что пишут "спасибо за помощь, я все решил", а решения не написано. Вот и я по этому же так написал. А так мне не жалко, пользуйтесь, может кому-то действительно поможет.
На стороне сервера и клиента в sqlnet.ora добавил вот эти строки:
Код: plsql
1.
2.
3.
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 не стал добавлять, потому что пришлось бы перезапускать листенер, чего не хотелось. Но можно было и так сделать, поэтому ограничился первым вариантом.

Еще раз всем спасибо за помощь и направление в нужное русло...
...
Рейтинг: 0 / 0
03.10.2017, 17:01
    #39530339
Vadim Lejnin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SQL*Net message/data to/from client
Андрей ЛуневVadim Lejninпропущено...

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

Без проблем. Просто, часто вижу здесь, что пишут "спасибо за помощь, я все решил", а решения не написано. Вот и я по этому же так написал. А так мне не жалко, пользуйтесь, может кому-то действительно поможет.
На стороне сервера и клиента в sqlnet.ora добавил вот эти строки:
Код: plsql
1.
2.
3.
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.
Минус в том, что придётся контролировать
...
Рейтинг: 0 / 0
03.10.2017, 17:07
    #39530340
SQL*Net message/data to/from client
Vadim LejninАндрей Луневпропущено...


Без проблем. Просто, часто вижу здесь, что пишут "спасибо за помощь, я все решил", а решения не написано. Вот и я по этому же так написал. А так мне не жалко, пользуйтесь, может кому-то действительно поможет.
На стороне сервера и клиента в sqlnet.ora добавил вот эти строки:
Код: plsql
1.
2.
3.
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.
Минус в том, что придётся контролировать

Спасибо, буду мониторить ситуацию, если будет такая необходимость буду делать, как Вы сказали.
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / SQL*Net message/data to/from client / 15 сообщений из 15, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]