Пул потоков в Jetty по умолчанию реализован с неограниченной очередью после заполнения пула потоков. Я бы поставил ограничение на размер очереди. Существует конструктор для BlockingArrayQueue
, который принимает значение maxCapacity
, но я не вижу способа вызвать его, используя jetty.xml. Начиная с Jetty 9, нет фильтра для threadpool в org.eclipse.jetty.server.Server
, я могу получить ссылку на пул потоков, который уже был создан и изменен (см. this answer). И установщик для поля очереди в QueuedThreadPool
выбрасывает UnsupportedOperationException
, говоря, что использует инъекцию конструктора. Но это невозможно, если я могу только мутировать пул потоков, а не устанавливать новый экземпляр сервера. Попытка определить пул потоков в качестве конструктора arg дает следующее предупреждение:Установить ограничение очереди через jetty.xml в Jetty 9 Maven Plugin
2014-09-22 13: 15: 13.688: WARN: oejx.XmlConfiguration: main: Ignored arg: | 200501000 | 6000 | ложь |
Это с плагином Jetty Maven v9.2.2.v20140723. Вот конфигурация в моем pom.xml:
<configuration>
<jettyXml>${basedir}/jetty.xml</jettyXml>
<stopKey>x</stopKey>
<stopPort>7999</stopPort>
<requestLog implementation="org.eclipse.jetty.server.NCSARequestLog">
<append>true</append>
</requestLog>
<webApp>
<war>${basedir}/target/app</war>
<contextPath>/app</contextPath>
</webApp>
<scanTargets>
<scanTarget>${basedir}/src/main/webapp/WEB-INF/</scanTarget>
</scanTargets>
<reload>manual</reload>
</configuration>
Спасибо за ваш ответ. Я рассматривал возможность установки размера очереди на основе этого документа: https://wiki.eclipse.org/Jetty/Howto/High_Load, а также при попытке воспроизвести эту ошибку в моей dev-блоке: https: // bugs.eclipse.org/bugs/show_bug.cgi?id=444031. Во всяком случае, что касается фактического обновления пула потоков, я пробовал, что предлагает jetty.xml, но я получаю это предупреждение: WARN: oejx.XmlConfiguration: main: Ignored arg:<Новый идентификатор = "threadpool" class = "org.eclipse.jetty.util.thread.QuuedThreadPool" /> –
Cameron
wiki.eclipse.org для Jetty 7 и 8. not jetty 9. (как говорится в верхней части wiki) –
Единственная причина, по которой проигнорировал arg, - это если у вас есть что-то, конфигурирующее сервер, прежде чем этот xml сможет выполнить. (вам нужно будет узнать подробности вашего запуска/конфигурации/$ {jetty.base}, чтобы узнать больше). Но это сейчас ПУТЬ выходит за рамки этой секции комментариев. Отправьте свой вопрос в список рассылки для причалов. –