Play framework «Сброс соединения с помощью однорангового узла»

#scala #playframework #akka-http

#scala #игровая фреймворк #akka-http

Вопрос:

У меня есть приложение Scala Play (2.6.25). Основываясь на приведенных здесь указаниях, я пытаюсь установить время ожидания чтения на 3 минуты, используя следующую конфигурацию (application.conf):

 play {
  server {
    akka {
      bindTimeout = 180 seconds
      requestTimeout = infinite
    }
  }
}

play {
  server {
    http {
      idleTimeout = 180 seconds
    }
  }
}
  

Но соединение клиента прерывается сервером примерно через 1 минуту 16 секунд.

Запрос:

 time curl --location --request POST 'http://localhost:9000/...' 
--header 'Content-Type: application/json' 
--header 'Cookie: JSESSIONID=78F3E25401A2631ABBE1006201AC1103' 
--max-time 180 
--verbose 
--data-raw '{
   ...
}'
  

Ответ:

 Note: Unnecessary use of -X or --request, POST is already inferred.
*   Trying ::1...
* TCP_NODELAY set
* Connected to localhost (::1) port 9000 (#0)
> POST /... HTTP/1.1
> Host: localhost:9000
> User-Agent: curl/7.54.0
> Accept: */*
> Content-Type: application/json
> Cookie: JSESSIONID=78F3E25401A2631ABBE1006201AC1103
> Content-Length: 1300
> Expect: 100-continue
>
< HTTP/1.1 100 Continue
< Date: Wed, 07 Oct 2020 18:24:32 GMT
* We are completely uploaded and fine
* Recv failure: Connection reset by peer
* stopped the pause stream!
* Closing connection 0
curl: (56) Recv failure: Connection reset by peer
curl --location --request POST  --header 'Content-Type: application/json'      0.01s user 0.01s system 0% cpu 1:16.11 total
  

Фильтры отключены ( play.filters.enabled = [] ).

Оцените любые указания на то, что я мог делать неправильно.

Ответ №1:

Для потомков указание конфигурации в качестве системного свойства помогло решить проблему. Вот так:

 -Dplay.server.http.idleTimeout=180s
  

Источник:
https://github.com/playframework/playframework/issues/8286#issuecomment-372635585