¿Reducir la frecuencia de rebake para evitar quedarnos sin memoria?

Estoy intentando rehacer (rebake) 45k publicaciones porque he cambiado la URL de la CDN de S3 y sigue quedándose sin memoria y se cierra.

Leí esto sobre cómo configurar un archivo de intercambio (swapfile)…

Los dos primeros comandos salieron bien…

  1. Crear un archivo de intercambio vacío
    install -o root -g root -m 0600 /dev/null /swapfile

  2. Escribir un archivo de 2GB llamado ‘swapfile’
    dd if=/dev/zero of=/swapfile bs=1k count=2048k

Pero luego, al ejecutar mkswap /swapfile, me dio un error…

Error de mkswap: swapfile está montado, no se creará espacio de intercambio

Intenté esto en su lugar…

swapoff /swapfile && rm /swapfile

Y obtuve este error…

swapoff: No superusuario

Estoy en un Digital Ocean Droplet, así que supongo que no tengo los permisos necesarios para eso, ¿verdad?

Al encontrarme con esos obstáculos, intenté simplemente rehacer las publicaciones sin cocinar ejecutando…

rake posts:rebake_uncooked_posts

Ejecutará varios cientos, tal vez unos miles si tengo suerte, y luego se cerrará de nuevo. Después de vigilarlo desde ayer, estoy medio horneado. :wink:

¿Hay alguna forma de ejecutar un comando de rehacer que esté limitado (throttled)? No me importa si tarda un tiempo, durante la noche o lo que sea, solo quiero que deje de fallar.

Cualquier ayuda sería muy apreciada.

Curiosamente, volví a ejecutar el sin cocinar mientras escribía todo eso. Fui a un largo almuerzo con unos amigos y volví cuando estaba 100% terminado. No estoy seguro de si el archivo de intercambio finalmente comenzó a funcionar o si fue solo una coincidencia de bajo uso en el momento, pero…

¡terminado, por fin!

Quizás si alguien tiene una respuesta, pueda ayudar a alguien más o a mí en la próxima ocasión.

En ubuntu:

Sudo -i

En Debian

Su -

1 me gusta

Gracias. No estoy seguro de si lo hice bien o no.

Eso no parece correcto. ¿Qué instrucciones estás siguiendo?

¿Y por qué estás creando el swap dentro del contenedor? El swap debe crearse en el host y no dentro del contenedor.

Porque solo sé mínimamente lo que estoy haciendo. :wink:

¿Entonces eso es a nivel de la base ubuntu: y no a los niveles ubuntu:/var/discourse o ubuntu-app:/var/www/discourse?

¿Alguna idea sobre la limitación de la nueva horneada (rebake throttling)?

1 me gusta

Nunca he visto que el rebake se limite, es asíncrono, pone en cola los trabajos que se procesan en segundo plano.

1 me gusta

De acuerdo, gracias. El mío terminó el rebake por ahora, así que me consideraré afortunado y dejaré de tocarlo. :smiley:

Advertencia :warning:: no hagas cosas a ciegas en un sitio de producción, existe una alta probabilidad de que las cosas salgan mal sin una forma real de recuperarlas.

No, no es al nivel ubuntu:.

¿Hiciste un ./launcher enter app antes de intentar crear el espacio de intercambio (swap)? Si es así, eso es lo que no deberías haber hecho.

Cuando inicias sesión por primera vez en tu servidor, estás en el host; cuando entras en la aplicación (app), estás realizando acciones dentro del contenedor.

El espacio de intercambio necesita crearse en el host; la aplicación vive dentro del contenedor, que es a lo que accederás para ejecutar el comando rebake.

De acuerdo, gracias por la orientación.

Nuestro foro es solo un grupo de amigos y tiene buenas copias de seguridad, así que si lo arruino por una semana más o menos, tendremos que aguantar con GroupMe. :wink:

Esto significa que ya tienes un archivo de intercambio, se llama /swapfile, y está en uso.

Si quieres hacerlo más grande, puedes detener tu contenedor, luego desmontarlo, y luego usar ese comando dd para hacerlo más grande, y después el comando mkswap.

Si alguien más lee esto, la forma en que yo lo hago es usar grep swap discourse-setup y mirar los comandos allí. Es una versión un poco más fácil de lo que hay que hacer.

3 Me gusta

A menudo sirvo como una cola de advertencia.

Gracias por la adición.

1 me gusta

No sé ustedes, pero yo me quedaba repetidamente sin memoria durante un proceso largo de “rebake” (rehorneado). Crear un archivo de intercambio (swap) de 2 GB mejoró la situación (se horneó más contenido), pero seguía obteniendo OOM (Out of Memory/Fuera de Memoria) después de un tiempo. Aumenté el swap a 4 GB y pude hornear de nuevo todas mis publicaciones.

No sabía nada sobre archivos de intercambio (swap files) aparte de esta guía Create a swapfile for your Linux server, pero chatGPT fue lo suficientemente conocedor como para ayudarme a aumentar mi swap sin problemas.

3 Me gusta

Un problema para mí es que no tengo una buena idea de lo que se debe hacer en cada área. Dentro o fuera del contenedor o dentro o fuera de la aplicación. Intento llevar buenas notas y tengo atajos mentales para las cosas que usaré de nuevo. Pero justo cuando empiezo a entenderlo, termino con lo que necesito hacer y no lo tocaré de nuevo en otros 6, 12 o 18 meses. Luego tengo que volver a aprenderlo.

suena como la historia de vida de todo administrador de sistemas :joy:

mi solución es tomar notas y luego crear un pequeño tutorial aquí en meta

Lo convierto en una wiki para que otros puedan editarlo si encuentran un error u omisión y la próxima vez que necesite hacer esto mismo…

1 me gusta