Stiamo testando di nuovo la nostra importazione su Discourse ora che queste modifiche sono state applicate. C’è stato un miglioramento nel caricamento dei profili (soprattutto dopo il caricamento iniziale, quando i dati sono nella cache), ma il caricamento di alcuni profili richiede ancora 5-10 secondi. C’è qualcosa di più che si può fare per risolvere il problema? Queste sembrano essere le query problematiche:
Sì, a entrambe. Ho effettuato dei test con un utente regolare e dopo aver disconnesso il comportamento sembra essere più o meno lo stesso.
Ho provato un esportazione e ripristino (rif: Restore Failing - Check Free Disk Space), ma questo non sembra aver modificato il comportamento. Vale anche la pena notare che spesso ricevo un errore quando provo a visualizzare queste pagine del profilo. Questo appare dopo alcuni secondi di tentativo di caricamento della pagina.
Quel argomento riguardava principalmente alcune query N+1 presenti in quella rotta, che sono state tutte risolte.
La pagina del profilo ha effettivamente alcune query pesanti, poiché genera un riepilogo molto personalizzato e completo dell’utente, ma un database di dimensioni ragionevoli dovrebbe essere in grado di renderizzarla in meno di 500 ms.
È un database grande per una VM piccola. Stai eseguendo tutto sulla stessa VM (Web+DB+Redis)?
Stai utilizzando l’ultima versione di PostgreSQL 13? Puoi provare a eseguire le attività di prestazioni opzionali descritte in Aggiornamento PostgreSQL 13, sia vacuum che reindex?
Gli utenti che presentano il problema sono quelli con molti post. Le pagine dei profili degli utenti con un basso numero di post si caricano immediatamente come previsto.
Forse devo rivedere le mie aspettative. Sono 8 core e 32 GB di RAM considerati pochi per Discourse? (Sì, stiamo eseguendo un’installazione in un singolo container.) Sul nostro software attuale, gestiamo facilmente questa board con 2 core e 8 GB di RAM.
Per quanto riguarda il database, si tratta di un container appena creato, quindi è iniziato dalla versione 13.1. Sarebbero necessari il vacuum e il reindex subito dopo un ripristino?
Li ho avviati poco dopo il tuo messaggio. Il vacuum è completato molto rapidamente, ma il reindicizzazione è ancora in corso, oltre 24 ore dopo l’avvio. È normale? Quanto dovrebbe durare? Come posso capire quale risorsa (se presente) è limitata? Non vedo postmaster utilizzare più di 2-4 core per la maggior parte del tempo e sembra esserci abbondante RAM disponibile.
Io e @Ghan stiamo cercando di perfezionare e garantire che l’importazione funzioni per la nostra comunità da oltre un anno, ma la domanda che mi sorge in mente è questa: ci sono altre considerazioni che dovremmo fare nell’importare una comunità con oltre 25 milioni di post?
Esistono comunità così grandi su Discourse?
Ho notato, guardando l’elenco pubblico dei clienti, che almeno da quelli che riesco a vedere, nessuno è vicino alle nostre dimensioni. Posso immaginare che ci siano solo migliaia o decine di migliaia di altri clienti che non riesco a vedere. Abbiamo completato con successo la nostra importazione, che funziona dal nostro lato, ma continuiamo a imbatterci in problemi come il caricamento del profilo per gli account con un gran numero di post e ora questo problema di reindicizzazione.
C’è qualche consiglio che ci possa essere dato per rendere più fluida questa transizione?
Ho trovato il comando rake db:stats in un altro post.
La reindicizzazione è ancora in corso, quindi non sono sicuro che questi numeri siano definitivi al 100%.
Sì, come ho detto in un altro argomento, abbiamo istanze con database da 1 GB e istanze con database da 500 GB. Ma queste istanze sono eseguite su VM di dimensioni completamente diverse.
Come sono le prestazioni del disco sul tuo server? Utilizza vecchi dischi rigidi meccanici?
Sì. Non ero sicuro se il launcher impostasse automaticamente alcuni valori in base alle risorse rilevate sulla macchina host o se esistessero linee guida consigliate per la configurazione. Esiste una guida da qualche parte per la configurazione del database?
Ci sono alcuni commenti nel file app.yml, anche se è davvero ottimizzato per siti più piccoli ospitati in proprio. Probabilmente vorrai aumentare le impostazioni lì (non ricordo i nomi esatti). Dovrai consultare alcune fonti più generali su PostgreSQL per ulteriori informazioni.
Non è che Discourse non possa gestire una community delle tue dimensioni, è solo diverso dall’gestirne una più piccola e un po’ più difficile.
Grazie, ci darò sicuramente un’occhiata. Non sono familiare con Postgres, ma spero che gli stessi principi si applichino dopo aver utilizzato MySQL per anni.
Assolutamente. Sento che una volta che riusciremo a ottenere un po’ di slancio su quali tipi di modifiche siano necessarie, tutto scorrerà molto più fluidamente.