29.01.2021 17:38
OlegON
 
В базе Oracle есть расчетный параметр aq_tm_processes, как единственный управляющий параметр для очередей Advanced Queue. Его переключают из 0 в положительное значение, но, в целом, его лучше не трогать.

Однако, в ряде случаев количество джобов AQ начинает безостановочно расти. Как правило, эти джобы выполняют DBMS_AQADM_SYS.REGISTER_DRIVER. И штатными средствами их невозможно остановить, только общим количеством job_queue_processes, лимитирование которыми приводит к тому, что обычные джобы блокируются джобами AQ. Как ограничить количество?

В Oracle 11 ввели скрытые параметры:

_srvntfn_job_deq_timeout (60) - как долго существовать AQ-джобу, если очередь пуста. Тут должен быть баланс, чтобы не пересоздавать лишний раз джоб, но я бы попробовал значение в 5 секунд, т.е. _srvntfn_job_deq_timeout=5)

_srvntfn_q_msgcount_inc (100) - какое количество новых сообщений в очереди должно создавать новый джоб. На современных процессорах очередь можно забить достаточно быстро, как и разобрать ее можно очень быстро. Я бы предложил _srvntfn_q_msgcount_inc=1000

_srvntfn_q_msgcount (50) - при каком количестве оставшихся сообщений можно начать сокращать количество джобов. Зеркальный предыдущему параметр. Я бы поставил 300, в любом случае меньший предыдущего параметр.

_srvntfn_jobsubmit_interval (3) - время между созданием джобов. Я бы оставил этот параметр в значении по умолчанию (3 секунды).

_srvntfn_max_concurrent_jobs (20) - максимальное количество одновременно работающих джобов. Необходимо подобрать такое количество, чтобы при общем количестве job_queue_processes не больше, чем количество ядер процессоров на хосте с базой, AQ-джобы не мешали отрабатывать обычным джобам. Начать можно с чего-то небольшого, например, 5

Кстати, несмотря на заявленные значения по умолчанию, я свидетель, что без настройки одновременно работало 60 AQ-джобов, поедая все доступные job_queue_processes.
29.01.2021 17:44
OlegON
 
Кстати, есть еще один параметр, который может пригодиться при настройке AQ
_emon_regular_ntfn_slaves
Часовой пояс GMT +3, время: 03:34.

Форум на базе vBulletin®
Copyright © Jelsoft Enterprises Ltd.
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.