Play Framework: что происходит, когда запросы превышают доступные потоки
У меня есть один поток в запросе блокировки обслуживания пула потоков.
def sync = Action {
import Contexts.blockingPool
Future {
Thread.sleep(100)
}
Ok("Done")
}
В Contexts.blockingPool настраивается как:
custom-pool {
fork-join-executor {
parallelism-min = 1
parallelism-max = 1
}
}
Теоретически, если вышеуказанный запрос получает 100 одновременных запросов, ожидаемое поведение должно быть следующим: 1 запрос должен находиться в спящем режиме (100), а остальные 99 запросов должны быть отклонены (или помещены в очередь до истечения времени ожидания?). Однако я заметил, что дополнительные рабочие потоки создаются для обслуживания остальных запросов. Я также заметил, что задержка увеличивается как (становится медленнее для запроса на обслуживание), так как количество потоков в пуле становится меньше, чем полученные запросы.
Какое поведение ожидается, если получен запрос, превышающий настроенный размер пула потоков?