De repente, el arranque está fallando

No cambié nada conscientemente, pero hoy, después de hacer git pull e intentar iniciar web_only.yml, me está dando errores, aproximadamente 90 segundos después de que comenzara el proceso de arranque. Estoy pegando solo las últimas líneas del error, por si ayuda a diagnosticar:

/var/www/discourse/vendor/bundle/ruby/3.1.0/gems/bootsnap-1.15.0/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:32:in `require'
/var/www/discourse/vendor/bundle/ruby/3.1.0/gems/bootsnap-1.15.0/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:32:in `require'
/var/www/discourse/vendor/bundle/ruby/3.1.0/gems/zeitwerk-2.6.6/lib/zeitwerk/kernel.rb:38:in `require'
/var/www/discourse/vendor/bundle/ruby/3.1.0/gems/railties-7.0.3.1/lib/rails/application.rb:348:in `require_environment!'
/var/www/discourse/vendor/bundle/ruby/3.1.0/gems/railties-7.0.3.1/lib/rails/application.rb:511:in `block in run_tasks_blocks'
/var/www/discourse/vendor/bundle/ruby/3.1.0/gems/rake-13.0.6/exe/rake:27:in `<top (required)>'
/usr/local/bin/bundle:25:in `load'
/usr/local/bin/bundle:25:in `<main>'
Tasks: TOP => db:migrate => db:load_config => environment
(See full trace by running task with --trace)
I, [2022-12-29T10:28:07.806753 #1]  INFO -- : gem install geocoder -v 1.4.4 -i /var/www/discourse/plugins/discourse-locations/gems/3.1.3 --no-document --ignore-dependencies --no-user-install
Successfully installed geocoder-1.4.4
1 gem installed


FAILED
--------------------
Pups::ExecError: cd /var/www/discourse &amp;&amp; su discourse -c 'bundle exec rake db:migrate' failed with return #&lt;Process::Status: pid 1066 exit 1&gt;
Location of failure: /usr/local/lib/ruby/gems/3.1.0/gems/pups-1.1.1/lib/pups/exec_command.rb:117:in `spawn'
exec failed with the params {"cd"=>"$home", "hook"=>"db_migrate", "cmd"=>["su discourse -c 'bundle exec rake db:migrate'"]}
bootstrap failed with exit code 1
** FAILED TO BOOTSTRAP ** please scroll up and look for earlier error messages, there may be more than one.
./discourse-doctor may help diagnose the problem.
9b7ac0c88b42b2aa1eccb9ef291527f4afd8b71861669af66ab79dee5ed82a45

No entiendo por qué no me permite el arranque del mismo archivo yml, que antes funcionaba. Mi sitio, sin embargo, funciona bien.

Tampoco pude encontrar ningún ‘error’ en ‘Discourse-Doctor’ (solo puedo buscar la palabra ‘error’, que no estaba en el archivo resultante de discourse doctor). No soy un experto, sin embargo.

Intenta eliminar el plugin de ubicaciones.

4 Me gusta

Lo clavaste. Ahora puedo iniciar el contenedor web completamente bien. ¡¡¡Muchas gracias, una vez más.


Pero ahora todas mis ‘mappings/locations’ anteriores de diferentes publicaciones y usuarios han desaparecido.

¿Hay alguna alternativa? Sé que puedo, y debo, y buscaré más sobre los temas de ese plugin. Pero en resumen, ¿hay alguna solución a este problema?

1 me gusta

Tiempo. Estoy seguro de que se solucionará en una semana o dos.

4 Me gusta

Ayer, después de deshabilitar el plugin ‘location’, pude reconstruir mi contenedor web_only correctamente. Pero hoy, incluso después de deshabilitar todos los plugins uno por uno, el arranque sigue fallando.

Pups::ExecError: cd /var/www/discourse && su discourse -c 'bundle exec rake themes:update assets:precompile' failed with return #<Process::Status: pid 900 exit 137>
Location of failure: /usr/local/lib/ruby/gems/3.1.0/gems/pups-1.1.1/lib/pups/exec_command.rb:117:in `spawn'
exec failed with the params {"cd"=>"$home", "hook"=>"assets_precompile", "cmd"=>["su discourse -c 'bundle exec rake themes:update assets:precompile'"]}
bootstrap failed with exit code 137
** FAILED TO BOOTSTRAP ** please scroll up and look for earlier error messages, there may be more than one.
./discourse-doctor may help diagnose the problem.
2c5f01d5ca6b216e744e11547b121e64aac0ad5e37d64d2ec5e2f279fe766c6a

AUNQUE MI SITIO ESTÁ FUNCIONANDO PERFECTAMENTE.

¿Qué puedo hacer al respecto? Por favor, guíame en alguna dirección.

¿No puedes reconstruir pero puedes iniciar la aplicación?

1 me gusta

Sí, el contenedor ya está iniciado y el sitio web funciona. Pero cuando intento reconstruir/arrancar el mismo contenedor (solo web), da un error. Aunque ayer, cuando me enfrenté al mismo problema, deshabilitar el plugin ‘location’ me permitió arrancarlo con éxito, pero hoy, incluso sin hacer ningún cambio, el mismo falló.

1 me gusta

Tu sitio parece estar fuera de servicio en este momento. EDITAR: No, ya está de vuelta. La mayor parte está en hindi y no puedo leerlo.

Solo para estar seguro. ¿Tienes ningún plugin habilitado en tu archivo app.yml en este momento? ¿Están todos comentados/eliminados?

El código de error 137 es falta de memoria.

5 Me gusta

¿Podría ser esto un problema?
¿Discourse necesita más de 4 GB ahora (incluso con todos los plugins desactivados)?
Los otros 2 sitios de wpress que se ejecutan en el mismo droplet/instancia están casi inactivos.

¿Podría haber una solución fácil para esto, aparte de optar por una máquina de 8 GB de RAM?

Sí, solo te quedan 400 MB de memoria libre, lo que no permitirá que Discourse se reconstruya. Intenta aumentarla a 4/5 GB, o apaga el foro antes de reconstruir y vuelve a intentarlo.

Suponiendo que los 400 MB libres son en reposo. La reconstrucción es bastante intensiva en el sistema (lo buscaría en Proxmox para mi sitio, pero ha estado desconectado por un tiempo), y requiere más memoria que en reposo.

Lo siento, pero no entendí bien el significado. ¿Quieres decir que debería aumentarlo aún más en 4 o 5 GB? Es decir, ¿hacerlo de 4 GB a 8 o 9 GB?

¿Cómo puedo cerrar mi foro (es decir, mi sitio web)?
Y
¿Quieres decir que después de aumentar mi memoria, aun así debería apagar mi sitio web antes de reconstruir?

Gracias por guiarme.

Intenta ejecutar esto en la línea de comandos antes de agregar memoria.
Esto asume que tienes una instalación estándar. Asegúrate de estar en el directorio /var/discourse.

./launcher stop app && ./launcher rebuild app && ./launcher start app

1 me gusta

¡Tienes razón!

Reinicié mi servidor Ubuntu, lo que me permitió tener entre 700 y 800 MB de RAM libre en mi instancia y el arranque se completó correctamente. Habría tenido que detener mi contenedor antes de otro arranque, si otro reconstrucción/arranque no hubiera tenido éxito después de habilitar los complementos deseados.

Pero estoy asombrado de las nuevas demandas de RAM de Discourse. Ya que el costo de la instancia/droplet casi se duplica al pasar de 4 a 8 GB de RAM. Lo cual no deseo, considerando que el mío es un sitio web muy, muy, muy pequeño (quizás 10 visitantes al día). Anteriormente, la instalación estándar de Discourse demostró exigir solo 1 o 2 GB de RAM.

Muchas gracias por ayudarme a reconocer lo que estaba saliendo mal.

1 me gusta

Si es posible, recomiendo optar por la máquina de 8 GB si está disponible. La máquina de 2 GB está pensada para foros más pequeños, y el tuyo parece tener mucho contenido.

1 me gusta

El mío tiene 4 GB con muy pocas visitas hasta ahora. Consideraré ir por 8 GB (no hay 6 GB) en el futuro.

Por cierto, algunos artículos en Google decían que la cantidad de memoria libre no importa mucho. Ya que es una especie de memoria desperdiciada que no hace nada. Y los usuarios deberían ir/verificar la ‘memoria disponible’, que está disponible si surge la necesidad. Y en mi caso, la memoria disponible es de 1,4 GB.

De nuevo, espero ser guiado en esto también, si es tan amable.

1 me gusta

¿Qué está haciendo su sistema con 1,4 GB disponibles?

1 me gusta

Como indica la captura de pantalla/artículo anterior, ‘disponible’ incluye ‘memoria caché’, etc., que puede ser ‘disponible para el sistema’ en caso de que surja la necesidad. Pero no soy un experto en estas cosas.

Y, todavía estoy investigando sobre esto (de nuevo, no soy un experto). Aunque supongo que mis otros 2 sitios web de WordPress, que considero casi inactivos, pueden tener algo que ver con esto. Intentaré desactivarlos en mi tiempo libre y luego compararé el rendimiento.

Por ahora, mi problema de reconstrucción se ha resuelto, sin tener que recurrir a recursos más altos y pagar casi el doble cada mes. Gracias a ti.

1 me gusta

Así que no es una buena idea.

Además, sería una buena idea configurar algo de intercambio.

Puedes añadir espacio de intercambio (swap). Se necesita mucha RAM para una reconstrucción. Además, dado que ves otras cosas ejecutándose aparte de Discourse en el servidor, se necesita más memoria que la mínima. Incluso si los otros sitios no reciben tráfico, tener el otro servidor web en ejecución utiliza algo de memoria.

3 Me gusta