Ограничить количество параллельной обработки сервлета - PullRequest
2 голосов
/ 28 октября 2009

У нас есть сервлет, который занимает больше виртуальной памяти на сервере при загрузке файлов. По этой причине мы хотели бы ограничить количество одновременных запросов к этому серверу, например, мы хотели бы, чтобы только 10 запросов обрабатывались параллельно. Мы бы хотели, чтобы другие запросы ожидали в очереди.

Можно ли создать собственный пул потоков и настроить его для определения максимального количества потоков и назначения этого сервлета для обработки этого сценария? Мы используем сервер WebLogic 9.2. Или есть другой лучший способ сделать это? Цени любые мысли.

Можем ли мы настроить отдельный сервлет и настроить пул потоков, чтобы разрешить только X число одновременных запросов, все остальные запросы будут помещены в очередь для использования следующего доступного сервлета. Этот подход выдает ошибку тайм-аута? Можете ли вы поделиться более подробной информацией об этом? Спасибо

http://download.oracle.com/docs/cd/E13222%5F01/wls/docs92/perform/appb%5Fqueues.html

1 Ответ

3 голосов
/ 28 октября 2009

Можно ли создать собственный пул потоков и назначить этому сервлету для обработки этого сценария? Мы используем сервер WebLogic 9.2. Или есть другой лучший способ сделать это? Цени любые мысли.

Да, это возможно. Вместо использования стандартного самонастраивающегося менеджера работ (начиная с Weblogic 9.x очереди выполнения заменяются менеджерами работ для пулов потоков 1 ), вы можете создать менеджер работ с специфические ограничения , такие как max-threads-constraint и, возможно, capacity. Затем вы можете назначить сервлет определенному менеджеру работ, используя wl-dispatch-policy файла дескриптора развертывания weblogic.xml.


1 Обратите внимание, что все еще возможно включить Модель пула потоков WebLogic 8.1 и использовать Очереди выполнения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...