Errores 502 al renombrar categorías grandes (por número de temas)

Hola.
También he publicado aquí: Moving posts returns 502 bad gateway - #63 by Canapin
pero parece que el error ocurre en otros contextos. No puedo renombrar una categoría:

Consola de JS:

Lo mismo ocurre en modo seguro (de todos modos no tengo temas o plugins personalizados, excepto data-explorer), versión 2.6.0.beta2
Mi servidor está en Ubuntu 18, tiene 4 vCPU, 8 GB de RAM y 160 GB de espacio en disco.

3 Me gusta

¿Tarda mucho en aparecer el error? Creo que estás experimentando un tiempo de espera debido a una consulta pesada.

1 me gusta

¿20-30 segundos quizás? Además, no ocurre al renombrar otras categorías. :thinking:

Edición: también ocurre en mi foro de desarrollo (una computadora bastante potente con un subsistema de Ubuntu).

Reedición:

  1. Las divisiones en lotes más pequeños parecen funcionar. Parece que Discourse no le gusta mover más de 3000 temas, incluso en un servidor más potente (lo escalé a 16 vCPU / 32 GB). Así que supongo que este problema es diferente al de renombrar mis categorías. Aún no pude renombrar la categoría.

  2. Creé una nueva categoría B (que puedo renombrar a voluntad), moví todos los temas de la categoría A (que no puedo renombrar) a la categoría B: luego ya no puedo renombrar la categoría B, pero sí puedo renombrar la categoría A.
    Intenté renombrar mis categorías, eligiendo cada vez una categoría con más publicaciones. Parece que las categorías con más contenido (más publicaciones, temas más grandes) tardan más en ser renombradas.

Hay 2 categorías que no puedo renombrar (realmente parece tomar demasiado tiempo…):

Puedo renombrar “Mensajes de perfil público”, que solo contienen temas sin respuestas.

30 segundos es el tiempo de espera de nginx, así que tiene sentido. Solo necesita un poco más de tiempo que eso.
Si yo fuera tú, lo probaría desde una consola de Rails.

Pensé hacerlo de esta manera, pero no estaba seguro de que fuera seguro: me pregunto por qué tomaría tanto tiempo solo para cambiar el título de una categoría en Discourse :thinking:
¿Necesita verificar cosas que no tengo en cuenta?

Parece que sí :slight_smile:
Supongo que podría estar recalcular algunas estadísticas. Lo que podrías hacer es conectarte a Postgres y ejecutar algo como:

SELECT pid, age(query_start, clock_timestamp()), usename, query 
FROM pg_stat_activity 
WHERE query != '<IDLE>' AND query NOT ILIKE '%pg_stat_activity%' 
ORDER BY query_start desc;

para ver qué es lo que está tardando tanto.

¡Gracias!
Sin embargo, no estoy familiarizado con eso. ¿Debería ejecutar esta consulta mientras Discourse intenta cambiar el nombre de la categoría?

Sí, te mostrará las consultas en ejecución actualmente, así que deberías ejecutarla mientras esperas. Tienes 30 segundos :wink:

2 Me gusta

Ejecuté la consulta unos 10 segundos después de intentar cambiar el nombre de la categoría, y esto es lo que devuelve:

No veo nada extraño. :thinking:

Veo una consulta muy trivial (UPDATE categories...) que parece estar tomando ya 13 segundos…
¿Qué sucede si la ejecutas manualmente?

EDIT: Si se trata de un foro importado, podría ser útil hacer una copia de seguridad y luego restaurarlo.

Dado que tengo el mismo problema en mi instalación de desarrollo en mi computadora personal, lo probé en mi foro de desarrollo.

Intenté cambiar el nombre de la categoría a través de la interfaz de Discourse. Apareció el error que mostré en mi primera publicación y se llenó mi memoria RAM:
image

Tu consulta muestra:

Intenté actualizar desde la consola de Rails, probando estos dos comandos:

ActiveRecord::Base.connection.execute("UPDATE categories SET name = 'General Discussion', topic_template = '', sort_order = '', default_view = '', read_only_banner = '', name_lower = 'general_discussion', updated_at = '2020-09-16 13:36:50.014192' WHERE categories.id = 21")
Category.where(id: 21).update(name: "General")

Ambos funcionaron perfectamente.

Eso es… interesante… :thinking:

Actualización: Intenté cambiar el nombre de una categoría en mi otro foro en vivo (con datos/servidor/sistema operativo/etc. diferentes, pero con la misma versión de Discourse).

Cambiar el nombre de una categoría es lento (~10 s). Lo intenté varias veces y también encontré un error 502 una vez.

Siento que esto podría ser un problema de Discourse, quizás relacionado con una actualización reciente:thinking:
Ambos foros usan la versión 2.6.0.beta2.

¿Podría alguien intentar cambiar el nombre de una categoría (una categoría con miles o decenas de miles de temas) en su propio foro, con la misma versión de Discourse, para ver si es lento o genera un error 502?

2 Me gusta

¿Te funcionó rápido el renombrar categorías con un gran número de temas en versiones anteriores de Discourse?

No recuerdo haber tenido un error 502 en mi foro anterior (que también fue importado), pero no he renombrado ninguna categoría desde la importación hace 3 años. No recuerdo si renombrar una categoría era lento.
En cuanto a mi nuevo foro, más grande, fue importado en la versión de Discourse que menciono, por lo que no puedo compararlo con una versión anterior.

1 me gusta

Solo una corrección sobre esto: Creo que antes ejecuté Category.where(id: 21).update(name: "General") para una categoría de la que moví los temas o algo así, porque ahora he tenido que usar este comando varias veces en distintas categorías, y parece que la duración del comando es proporcional al número de publicaciones en la categoría de destino.
Básicamente, es el mismo problema que cuando actualizo la categoría desde la interfaz, excepto que no se agota el tiempo de espera en la línea de comandos.

Tardó quizás más de un minuto en una categoría con más de 30.000 temas, más de 30 segundos en una categoría con más de 15.000 temas, y fue rápido en categorías con pocos temas.

1 me gusta

Nuestro foro ha estado cometiendo cada vez más errores en los últimos 6 meses. Acabo de duplicar los recursos de nuestro servidor (16 CPUs, 64 GB de RAM) y, aunque funciona mucho mejor, he encontrado un error reproducible.

Simplemente intentar renombrar una categoría produce un error 502 cada vez.

2 Me gusta

¿Ajustaste la configuración en app.yml en consecuencia?

Deberías revisar los registros para ver si encuentras alguna pista. ¿Hay algo especial en esa categoría? ¿Quizás haya una corrupción en un índice de la base de datos?

2 Me gusta

¡Sí!

¿Eso significa simplemente mirar forumwebsite.com/logs? No veo errores que se relacionen específicamente con la acción de renombrar una categoría.

Veo muchas cosas en Información, pero de nuevo, nada específico para esa acción.

¿Debería intentar limpiar algún error?

2 Me gusta

puedes revisar /admin/logs (o algo similar) en la interfaz web y algo como

tail -f /var/discourse/shared/standalone/logs/rails/production.log

Esto es de memoria y escrito a mano, así que te recomendaría usar la autocompletación con la tecla Tab. :slight_smile:

4 Me gusta