Nginx client closed connection while waiting for request

2021/02/16 11:38:13 [info] 7#7: *1 client closed connection while waiting for request, client: 172.23.0.1, server: 0.0.0.0:80 Esta es la llamada al contenedor webserver (nginx:1.17.8) desde mi maquina host (172.23.0.1) 2021/02/16 11:40:53 [error] 7#7: *2 recv() failed (104: Connection reset by peer) while reading response header from upstream, client: 172.23.0.1, server:, request: "GET /api/v1.0/azure/vm HTTP/1.1", upstream: "fastcgi://172.23.0.2:9000", host: "localhost:8765" Esta llamada al contenedor app (php:7.2.6-fpm - FastCGI Process Manager) desde el contenedor nginx y al parecer hay un error de envio de datos al FPM
recv() failed (Connection reset by peer) while reading response header from upstream
Trabajando en un entorno de desarrollo con Mariadb y PHP en contenedores según este docker-compose.yml
services:
app:
# contenedor con: php:7.2.6-fpm
dev:
# contenedor con: php:7.2.16-cli
webserver:
# contenedor con: nginx:1.17.8
database:
#contenedor con 10.3.7-MariaDB-1:10.3.7+maria~jessie
Sucede que en algunas peticiones con un tiempo de respuesta superior a un minuto. Nginx me devuelve un 502.
Revisando los logs del contenedor webserver se visualiza lo que está en la imagen. Al parecer esto sucede por un error de conexión entre los contenedores webserver y app.
Deduzco que en el contenedor app (que es el fpm) una vez procesada la petición que toma un tiempo considerable intenta comunicar el resultado al Nginx con unas cabeceras que el servidor web no es capaz de interpretar.
Para solucionar esto hay que reiniciar el contenedor FPM
docker restart app
Resultado despues de reiniciar

Aquí (en la imagen anterior) se visualiza que Nginx ha recibido las cabeceras y el payload correctamente. Antes de enviarlo al cliente (mi navegador) almacena esa respuesta en un fichero temporal.
Para revisar los logs de un contenedor hay que ejecutar: docker logs nombre-del-contenedor
Autor: Eduardo A. F.
Publicado: 28-02-2021 19:31