DropWizard: Почему игнорируется соединение, если залито 100 запросов? - PullRequest
0 голосов
/ 04 июля 2018

У нас есть тесты Гатлинга (mis), используемые для интеграционного тестирования. В одном месте он делает 100 запросов HTTP в одно и то же время к тестируемой службе, основанной на DropWizard 1.3.5.

До обновления с DropWizard 0.9.5 это работало нормально.

Но теперь эти запросы заканчиваются на ConnectException на стороне клиента, и я не вижу никаких ошибок на стороне сервера - запросы молча игнорируются DropWizard. Я также посмотрел на бассейны над JMX и не вижу, чтобы они нигде не висели. Похоже, что сервер потерял отслеживание сокета и никогда не отправлял ответ или «зависал».

java.net.ConnectException: Connection timed out: somehost.mycompany.net/10.103.66.45:9000

Я посмотрел справочник по конфигурации DropWizard . Я не вижу тонкой настройки того, что отклонено и когда. Вот мой текущий конфиг:

server:
  maxThreads: 64
  maxQueuedRequests: 1024
  adminMaxThreads: 8
  ...
database:
  url: jdbc:postgresql://localhost:5432/mydb
  poolInitialSize: 20
  poolMaxSize: 100

Я включил размер пула БД, поскольку он может собирать ресурсы для обработки запросов IoC, но 100 должен охватывать все потоки Dw.

Я ожидаю, что дополнительные запросы будут ждать в очереди (какой AFAIK следует обрабатывать на стороне ОС, поскольку используется новый IO API) и принимать 64 потока.

Интересно то, что до того, как я установил maxThreads на 64, применяется значение по умолчанию 1024; а потом, иногда тесты пройдены, иногда нет.

Мой вопрос:
Делает ли DropWizard намеренно (обнаружение DoS)?
Если да, то как мне его настроить?
Если нет, то это ошибка.

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