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)
Mein Server hat 2 CPU-Kerne und 8 GB RAM.
Das Protokoll zeigt, dass layouts/application.html.erb so langsam gerendert wurde.
Ich habe einige Inhalte in layouts/application.html.erb entfernt und es dauert 300-500 ms zum Antworten.
Ich habe eine Remote-Datenbank verwendet, die Layoutkomponente von Discourse ruft über 60 SQL-Abfragen ab, jede SQL-Abfrage benötigt ±30 ms zur Übertragung, sodass das erste Rendern 2-4 Sekunden dauert.
Das Problem verschwand, als ich zu einer lokalen Datenbank wechselte.
Ich habe ein ähnliches Problem.
Ich glaube, Docker macht eine Art magische Indizierung nur für interne Datenbanken, was nicht gut ist, da dies unsere Skalierungsmöglichkeiten stark einschränkt.
Hmmm … das klingt für mich nicht richtig. Die gleichen Migrationen sollten angewendet werden, unabhängig davon, wo sich die Datenbank befindet … und dazu gehört auch das Hinzufügen von Indizes.
Es wäre gut, den Unterschied zu demonstrieren, wenn Sie einen Abfrageplan für beide Instanzen für dieselbe Abfrage erhalten können, die auf der externen Instanz viel länger dauert.
(Ich weiß, dass das für Sie mühsam sein könnte, das zusammenzustellen)
Wenn der Abfrageplan identisch ist, dann muss es doch die Latenz oder die Leistung der externen Datenbank sein, die schuld ist?
Das ist vergleichsweise eine riesige Menge Zeit. Mit Ihrem SQL-Setup stimmt etwas ganz und gar nicht.
Wie weit ist die Datenbank entfernt?
Der 99. Perzentil der gesamten SQL-Zeit für eingeloggte Anfragen auf Meta (gehostet in AWS) beträgt ~54ms und auf unserem eigenen Hosting für eine ähnliche Seite ~25ms.
Für anonyme Nutzer sind es etwa 40ms und 10ms.
Das sieht so aus, als ob Sie im Entwicklungsmodus laufen, nicht bei einer Standardinstallation.