Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 PX Deq Credit: send blkd  [new]
expimp
Member

Откуда:
Сообщений: 573
Десяток запросов клиентов из Delphi (через сервер приложений) тормозят по-черному.
> 5 часов.
А всего то получают ~ 6000 записей по 100 знакомест.
По statspack'у сами запросы выполняются мгновенно.
А вот PX Deq Credit: send blkd и SQL message from client имеют астрономические значения.
Т.е. сервер ждет ответа от клиента? Причем клиенты гудят под 100% CPU.
Запросы однотипны. И, удивительно, откуда ожидания типа PX?!

Никогда эта база не знала параллельных запросов!

Читаю в сети все подряд. Проблем таких много, а ответов - увы!

Вдруг кто, чего, того...
27 ноя 06, 19:21    [3458161]     Ответить | Цитировать Сообщить модератору
 Re: PX Deq Credit: send blkd  [new]
BW
Member

Откуда:
Сообщений: 727
expimp
Десяток запросов клиентов из Delphi (через сервер приложений) тормозят по-черному.
> 5 часов.
А всего то получают ~ 6000 записей по 100 знакомест.
По statspack'у сами запросы выполняются мгновенно.
А вот PX Deq Credit: send blkd и SQL message from client имеют астрономические значения.
Т.е. сервер ждет ответа от клиента? Причем клиенты гудят под 100% CPU.
Запросы однотипны. И, удивительно, откуда ожидания типа PX?!

Никогда эта база не знала параллельных запросов!

Читаю в сети все подряд. Проблем таких много, а ответов - увы!

Вдруг кто, чего, того...


Версия Оракла какая? Если есть, то приложите к Вашему сообщению отчет Statspack.

С уважением,
bw.
27 ноя 06, 19:34    [3458213]     Ответить | Цитировать Сообщить модератору
 Re: PX Deq Credit: send blkd  [new]
Александр Соколов
Member

Откуда: Протвино
Сообщений: 1419
О SQL*Net message from client: Пример 3. Медленное клиент-серверное приложение

Событие ожидания PX Deq Credit: send blkd имеет параметры:
P1 = sleeptime/senderid
P2 = passes
P3 = qref
sleeptime/senderid

You can decode the senderid with following SQL block
set SERVEROUTPUT on
undef p1
declare
    inst   varchar(20); 
    sender varchar(20);
begin
  select bitand(&&p1, 16711680) - 65535 as SNDRINST,
     decode(bitand(&&p1, 65535),65535, 'QC', 'P'||to_char(bitand(&&p1, 65535),'fm000') ) as SNDR
     into  inst , sender
  from dual
  where bitand(&&p1, 268435456) = 268435456;
      dbms_output.put_line('Instance = '||inst);
      dbms_output.put_line('Sender = '||sender );
end;
/ 
If you get no rows back than p1 is a sleeptime. As example senderid/sleeptime = 268501004. Than the script will give
Instance = 1
Sender = P012
This means we have to investigate why slave P012 is not fast enough to dequeue the messages and send the blocks.
28 ноя 06, 15:05    [3462169]     Ответить | Цитировать Сообщить модератору
 Re: PX Deq Credit: send blkd  [new]
expimp
Member

Откуда:
Сообщений: 573
to: BW

Oracle 10.1.0.3

file is attached

Tnx!
28 ноя 06, 17:38    [3463495]     Ответить | Цитировать Сообщить модератору
 Re: PX Deq Credit: send blkd  [new]
expimp
Member

Откуда:
Сообщений: 573
to Александр Соколов

Еще не осознал, в чем дело конкретно, но увидел, что именно тормозящие заросы
запускают дополнительные процессы.

Как то нужно с ними бороться?

Параллельное выполнение задается
при create table...
при select /*+parallel ...*/
на уровне экземпляра parallel_threds_per_CPU

Но на уровне экземпляра стандарт - 2 (у меня 2 просессора и хипптрейд :)
28 ноя 06, 17:55    [3463600]     Ответить | Цитировать Сообщить модератору
 Re: PX Deq Credit: send blkd  [new]
expimp
Member

Откуда:
Сообщений: 573
Первый раз передать файл со statspack'ом не удалось. Повторяю.

К сообщению приложен файл (sp_5_7.txt - 98Kb) cкачать
28 ноя 06, 18:00    [3463651]     Ответить | Цитировать Сообщить модератору
 Re: PX Deq Credit: send blkd  [new]
Александр Соколов
Member

Откуда: Протвино
Сообщений: 1419
In same cases it is normal that we see high waits on "PX Deq Credit: send blkd". An example: We do a select from a large table in parallel.
select /*+ parallel(sales, 10) +/ * from sales)
Than you see a lot of waits for "PX Deq Credit: send blkd" in the slave traces. All slaves wait for the QC to get back the credit bit. The QC can not dequeue fast enough the rows from the slaves, beause there are to many slaves that send rows back to the QC. In this case it is normal.


Параметр PARALLEL_THREADS_PER_CPU задает степень параллелизма по
умолчанию для экземпляра и определяет алгоритмы адаптации степени
параллелизма и выравнивания нагрузки. Параметр задает число парал-
лельных процессов или потоков, которые может обработать центральный
процессор во время параллельного выполнения операций.
Значение по умолчанию зависит от конкретной операционной системы, и в
большинстве случаев можно его не менять. Значение этого параметра следует
уменьшить, если компьютер проявляет признаки перегрузки при выполнении
репрезентативного параллельного запроса. Значение этого параметра следует
увеличить, если значительная часть процессорного времени в системе
тратится на ожидание ввода-вывода, а не на обработку данных.
29 ноя 06, 13:41    [3466773]     Ответить | Цитировать Сообщить модератору
 Re: PX Deq Credit: send blkd  [new]
Александр Соколов
Member

Откуда: Протвино
Сообщений: 1419
expimp
А всего то получают ~ 6000 записей по 100 знакомест.
По statspack'у сами запросы выполняются мгновенно.

Может быть дело в том, что записи передаются клиенту по одной. Я же уже давал ссылку...
29 ноя 06, 14:33    [3467171]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить