Started GET "/" for 219.144.218.209 at 2025-03-17 18:22:55 +0000
Processing by ListController#latest as HTML
Rendered layout layouts/application.html.erb (Duration: 1932.6ms | GC: 10.6ms)
Completed 200 OK in 2521ms (Views: 1933.4ms | ActiveRecord: 0.0ms (0 queries, 0 cached) | GC: 14.9ms)
Il mio server ha 2 core CPU e 8 GB di RAM.
Il log mostra che layouts/application.html.erb è stato renderizzato molto lentamente.
Ho rimosso alcuni contenuti in layouts/application.html.erb e ora impiega 300-500 ms per rispondere.
Ho utilizzato un database remoto, il componente di layout di Discourse recupera oltre 60 SQL, ogni SQL richiede circa 30 ms per il trasferimento, quindi il primo rendering causa 2-4 secondi.
Il problema scompare quando sono passato al database locale.
Ho un problema simile.
Penso che Docker stia eseguendo una sorta di indicizzazione magica solo sui database interni, il che non è ottimale poiché limita gravemente la nostra scalabilità.
Hmmm… a me non sembra corretto. Le stesse migrazioni dovrebbero essere applicate indipendentemente da dove si trovi il database… e ciò include l’aggiunta di indici.
Sarebbe utile dimostrare la differenza, se riesci a ottenere un piano di query su entrambe le istanze per la stessa query che richiede molto più tempo sull’istanza esterna.
(apprezzo che possa essere un problema per te raccogliere questi dati)
Se il piano di query è identico, allora deve essere la latenza o le prestazioni del database esterno il problema?
Questa è una quantità di tempo enorme in confronto. C’è qualcosa di molto sbagliato nella tua configurazione SQL.
Quanto è remota il database?
Il 99° percentile del tempo SQL totale per le richieste con accesso effettuato su meta (ospitato su AWS) è di circa 54 ms e sul nostro hosting dedicato per un sito simile è di circa 25 ms.
Anonimo è intorno ai 40 ms e 10 ms.
Sembra che tu stia eseguendo in modalità di sviluppo, non un’installazione standard.