soa suite 11g Обработка запросов bpel медленная, когда отправляется много параллельных запросов
У нас есть композит, содержащий один посредник с правилом последовательной маршрутизации, который нужно оставить позади.
Когда одиночный запрос отправляется в композит, он обрабатывается довольно быстро (min=600 мс, max=2 с). Но когда мы отправляем 60 одновременных запросов, обработка происходит намного медленнее (min=2 с, avg=6 с, max=25 с).
В ходе расследования мы выяснили, что:
- Пулы источников данных не были исчерпаны (SOA_INFRA)
- Процессоры на серверах SOA и серверах баз данных ничего не делали (использование 5-10%)
- между запросом посредника и задержкой в bpel существует 15-секундная задержка.
Кажется, что есть некоторые другие ограниченные ресурсы, например, максимальное количество экземпляров bpel, работающих одновременно. Но мы не можем его найти и как его настроить.
Как настроить SOA 11g, чтобы быстрее обслуживать параллельные запросы?
Спасибо!
1 ответ
По умолчанию компоненты BPEL являются "асинхронными" в том смысле, что сообщение сначала сохраняется в базе данных soainfra, а затем вызывается с использованием потоков вызова диспетчера (даже в компонентах sync - request/reply).
См. Следующий документ Oracle для изменения истинной синхронизации процесса BPEL и его запуска в существующем потоке: http://docs.oracle.com/cd/E23943_01/dev.1111/e10224/soa_transactions.htm
Если вы не хотите связываться со свойствами транзакции BPEL, обратитесь к следующему документу Oracle, чтобы узнать, как увеличить количество потоков диспетчера: http://docs.oracle.com/cd/E25054_01/core.1111/e10108/bpel.htm