Ограничить количество параллельной обработки сервлета

StackOverflow https://stackoverflow.com/questions/1635183

  •  06-07-2019
  •  | 
  •  

Вопрос

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

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

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

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

Это было полезно?

Решение

  

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

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

<Ч>

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top