У нас есть тесты Гатлинга (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)?
Если да, то как мне его настроить?
Если нет, то это ошибка.