Error 502 en nginx

Hola,

Acabo de ejecutar ./launcher rebuild app sin errores aparentes. Pero cuando intento abrir el sitio, obtengo un error 502.

El registro de errores de nginx (shared/standalone/log/var-log/nginx/error.log) muestra:

2020/08/12 05:47:43 [error] 653#653: *7 connect() failed (111: Connection refused) while connecting to upstream, client: [...], server: _, request: "GET / HTTP/2.0", upstream: "http://127.0.0.1:3000/", host: "[...]"

He revisado todos los temas que encontré sobre errores 502 de Discourse y nginx, pero no pude encontrar ni entender nada que tenga sentido para mi caso.

Esto podría ser relevante, ejecutando desde el contenedor:

# netstat -plant
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:6379            0.0.0.0:*               LISTEN      -                   
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      644/nginx: master p 
tcp        0      0 0.0.0.0:5432            0.0.0.0:*               LISTEN      -                   
tcp        0      0 0.0.0.0:443             0.0.0.0:*               LISTEN      644/nginx: master p 
tcp6       0      0 :::6379                 :::*                    LISTEN      -                   
tcp6       0      0 :::5432                 :::*                    LISTEN      -

¿Hay algo que debería estar ejecutándose en el puerto 3000?

¿Podrías indicarme dónde buscar más información para depurar este problema?

pura vida :slight_smile:

Inicialmente muestra un error 502 porque los servicios dentro del contenedor están iniciándose. Debería desaparecer en menos de 30 segundos. Si no es así, es posible que la CPU de tu servidor esté bajo una carga extrema, lo que está causando la lentitud.

3 Me gusta

Gracias @itsbhanusharma.

He ejecutado ./launcher restart app y he monitorizado la carga con top, y está muy por debajo del 10%.

Creo que la CPU debería ser suficiente para manejar la carga:

$ cat /proc/cpuinfo  | grep 'name' | uniq
model name      : Intel(R) Xeon(R) CPU E5-1650 v3 @ 3.50GHz
$ cat /proc/cpuinfo  | grep process | wc -l
4

¿Hay alguna mejor manera de depurar el inicio del contenedor?
¿Alguna otra idea?

1 me gusta

¿Qué plugins están instalados? ¿Está este servidor en SSD?

Acabo de clonar el repositorio y ejecutar los comandos de configuración, así que supongo que solo tiene los plugins predeterminados. No estoy seguro de dónde verificarlo, pero estoy seguro de que no he añadido ninguno.

El servidor no es SSD.

Hola @elopio

¿Quizás podrías publicar tu archivo ‘yml’ sin ninguna información sensible?

Claro, está aquí:

Discourse requiere SSD; los discos giratorios normales no proporcionan IOPS suficientes.

¿Y es esa la causa del error 502? ¿O, sin un SSD, debería ver el sitio web funcionando, pero muy lento?

El uso de un disco duro tradicional en lugar de una unidad SSD no debería causar un error 502. Eso no es realmente plausible, como indica tu pregunta, @elopio.

Aquí tienes un pequeño artículo que podría ser útil:

En mi opinión, lo mejor que puedes hacer es abrir varias terminales y ejecutar tail -f en los archivos de registro tanto de Rails como de nginx, incluyendo los registros de errores y de acceso; luego, intenta acceder y asegúrate de que, cuando aparezca el error 502, tengas los ojos puestos en el final de los archivos de registro.

¿Sabes dónde residen esos archivos de registro y cómo ejecutar los comandos tail -f en las terminales?


Nota: antes preguntaste:

Rails se ejecuta en el puerto 3000 dentro del contenedor Docker y ese puerto no está expuesto fuera del contenedor. Por eso no ves el puerto 3000 fuera del contenedor cuando ejecutas netstat fuera de él.

Espero que esto te ayude.

Por experiencia, una E/S lenta definitivamente puede y suele causar tiempos de espera y un error 502.

Los IOPS a nivel de SSD son un requisito firme.

¡Wooo! Al revisar los registros de Rails, descubrí que el registro de Unicorn era enorme y mostraba errores de permisos. Eliminé rm -rf tmp/cache/bootsnap-compile-cache/ y ahora veo la pantalla de felicitaciones!!!

Gracias, amigos. Voy a seguir jugando un poco más con esto antes de decidir recrearlo en un servidor SSD.

4 Me gusta

De nada, @elopio

Me alegra que hayas encontrado el problema en los registros y lo hayas solucionado. Muy bien hecho.

¡Que tengas un buen viaje por delante!

1 me gusta

¡Ok, esto está funcionando de maravilla! Quiero mostrar lo que estamos haciendo:

https://bunqueer.jaquerespeis.org/

Es la migración del hackerspace de Costa Rica de Telegram a Discourse :slight_smile: Todavía tenemos muchísimas cosas por hacer, pero esta vez estoy seguro de que lograremos eliminar el chat definitivamente. ¡Muchas gracias, equipo de Discourse!

2 Me gusta

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.