Play Framework: o que acontece quando as solicitações excedem os threads disponíveis

Eu tenho um thread na solicitação de bloqueio de manutenção do pool de threads.

  def sync = Action {
    import Contexts.blockingPool
    Future { 
        Thread.sleep(100)
    } 
    Ok("Done")
  }

No Contexts.blockingPool está configurado como:

custom-pool {
    fork-join-executor {
            parallelism-min = 1
            parallelism-max = 1
    }
}

Em teoria, se a solicitação acima receber 100 solicitações simultâneas, o comportamento esperado deve ser: 1 solicitação deve dormir (100) e o restante de 99 solicitações deve ser rejeitado (ou enfileirado até o tempo limite?). No entanto, observei que threads de trabalho extras são criados para atender ao restante das solicitações. Também observei que a latência aumenta à medida que (fica mais lenta a solicitação de serviço) à medida que o número de threads no pool fica menor que as solicitações recebidas.

Qual é o comportamento esperado se uma solicitação maior que o tamanho do conjunto de encadeamentos configurado for recebida?

questionAnswers(2)

yourAnswerToTheQuestion