Errori 502 durante la ridenominazione di categorie grandi (per numero di argomenti)

Ciao.
Ho pubblicato anche qui: Moving posts returns 502 bad gateway - #63 by Canapin
ma sembra che l’errore si verifichi anche in altri contesti. Non riesco a rinominare una categoria:

Console JS:

Lo stesso in modalità sicura (comunque non ho temi o plugin personalizzati, tranne data-explorer), versione 2.6.0.beta2
Il mio server è su Ubuntu 18, ha 4 vCPU, 8 GB di RAM e 160 GB di spazio su disco.

3 Mi Piace

Ci vuole molto tempo perché l’errore emerga? Penso che tu stia riscontrando un timeout a causa di una query pesante.

1 Mi Piace

Forse 20-30 secondi? Inoltre, non succede quando rinomino altre categorie. :thinking:

edit: succede anche sul mio forum di sviluppo (un computer abbastanza potente con un sottosistema Ubuntu).

ri-edit:

  1. Sembra che la suddivisione in lotti più piccoli funzioni. Quindi Discourse non sembra gradire lo spostamento di più di 3000 argomenti, anche su un server più potente (ho aumentato la configurazione a 16 vCPU / 32 GB). Quindi immagino che questo problema sia diverso dal rinominare le mie categorie. Non sono ancora riuscito a rinominare la categoria.

  2. Ho creato una nuova categoria B (che posso rinominare a piacimento), ho spostato tutti gli argomenti dalla categoria A (che non riesco a rinominare) alla categoria B: ora non riesco più a rinominare la categoria B, mentre posso rinominare la categoria A.
    Ho provato a rinominare le mie categorie, scegliendo ogni volta una categoria con più post. Sembra che le categorie con più contenuti (più post, argomenti più lunghi) richiedano più tempo per essere rinominate.

Ci sono 2 categorie che non riesco a rinominare (sembra che richiedano davvero troppo tempo…):

Posso rinominare i messaggi del profilo pubblico, che contengono solo argomenti senza risposte.

30 secondi sono il timeout di nginx, quindi ha senso. Serve solo più tempo di così.
Se fossi in te, proverei questo da una console di Rails.

Pensavo di farlo in questo modo, ma non ero sicuro che fosse sicuro: mi chiedo perché ci voglia così tanto tempo solo per rinominare il titolo di una categoria in Discourse :thinking:
Deve controllare cose a cui non penso?

A quanto pare :slight_smile:
Immagino che potrebbe essere in fase di ricalcolo di alcune statistiche. Potresti connetterti a Postgres ed eseguire qualcosa come

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;

per vedere cosa sta richiedendo così tanto tempo.

Grazie!
Non ne sono però familiare. Dovrei eseguire questa query mentre Discourse sta cercando di modificare il nome della categoria?

Sì, ti mostrerà le query attualmente in esecuzione, quindi dovresti eseguirlo in attesa. Hai 30 secondi :wink:

2 Mi Piace

Ho eseguito la query circa 10 secondi dopo aver provato a cambiare il nome della categoria, ed ecco cosa restituisce:

Non vedo nulla di strano? :thinking:

Vedo una query molto banale (UPDATE categories...) che sembra stia già occupando 13 secondi…
Cosa succede se la esegui manualmente?

EDIT: se si tratta di un forum importato, potrebbe essere utile eseguire un backup e poi ripristinarlo.

Poiché ho lo stesso problema sulla mia installazione di sviluppo sul mio computer domestico, ho provato sul mio forum di sviluppo.

Ho cercato di modificare il nome della categoria tramite l’interfaccia di Discourse. L’errore mostrato nel mio primo messaggio si è verificato e la mia RAM si è riempita:
image

La tua query mostra:

Ho provato ad aggiornare dalla console di Rails, utilizzando questi due comandi:

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")

Entrambi hanno funzionato alla perfezione.

È… interessante… :thinking:

Aggiornamento: Ho provato a rinominare una categoria sul mio altro forum attivo (con dati/server/sistema operativo diversi, ma stessa versione di Discourse).

La modifica del nome di una categoria è lenta (~10 secondi). L’ho provato più volte e ho anche riscontrato un errore 502 una volta.

Penso che questo possa essere un problema di Discourse, forse legato a un aggiornamento recente? :thinking:
Entrambi i forum usano la versione 2.6.0.beta2.

Qualcuno può provare a cambiare il nome di una categoria (una categoria con migliaia o decine di migliaia di argomenti) sul proprio forum, con la stessa versione di Discourse, per verificare se è lenta o genera un errore 502?

2 Mi Piace

Rinominare le categorie con un gran numero di argomenti ha funzionato velocemente per te nelle versioni precedenti di Discourse?

Non ricordo di aver riscontrato un errore 502 sul mio forum precedente (che è stato anch’esso importato), ma non ho rinominato una categoria dall’importazione avvenuta tre anni fa. Non ricordo se la rinomina di una categoria fosse lenta. Per quanto riguarda il mio nuovo forum, più grande, è stato importato sulla versione di Discourse che sto citando, quindi non posso confrontarlo con una versione più vecchia.

1 Mi Piace

Solo una correzione a riguardo: credo di aver precedentemente eseguito Category.where(id: 21).update(name: "General") per una categoria dalla quale avevo spostato i topic o qualcosa di simile, perché ho dovuto usare questo comando più volte su varie categorie in questo momento, e sembra che la durata del comando sia proporzionale al numero di post nella categoria di destinazione.
Quindi, fondamentalmente, è lo stesso problema che si verifica quando aggiorno la categoria dall’interfaccia, tranne che qui non va in timeout tramite riga di comando.

Ci è voluto forse più di un minuto per una categoria con oltre 30.000 topic, più di 30 secondi per una categoria con oltre 15.000 topic, mentre è stato veloce per le categorie con pochi topic.

1 Mi Piace

Il nostro forum è diventato sempre più soggetto a errori negli ultimi 6 mesi. Ho appena raddoppiato le risorse del server (16 CPU, 64 GB di RAM) e, sebbene funzioni molto meglio, ho individuato un errore riproducibile.

Provare semplicemente a rinominare una categoria restituisce sempre un errore 502.

2 Mi Piace

Hai modificato di conseguenza le impostazioni in app.yml?

Dovresti controllare i log per vedere se trovi qualche indizio. C’è qualcosa di speciale in quella categoria? Forse hai una corruzione dell’indice del database?

2 Mi Piace

Sì!

Si tratta semplicemente di guardare forumwebsite.com/logs? Non vedo errori che si riferiscano specificamente all’azione di rinominare una categoria.

Vedo molte cose in Info, ma ancora una volta nulla di specifico per quell’azione.

Dovrei provare a eliminare qualsiasi errore?

2 Mi Piace

Puoi guardare /admin/logs (o qualcosa di simile) nell’interfaccia web e qualcosa come

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

Questo è a memoria e scritto con le dita, quindi ti consiglio di usare un po’ di completamento automatico con il tasto Tab. :slight_smile:

4 Mi Piace