Wie man Parameter für große und stark frequentierte Websites anpasst?

Ich betreibe eine Community mit 38.000 Benutzern auf einer VM mit 24 Kernen und 64 GB RAM. Ich habe DISCOURSE_UNICORN_WORKERS auf 48 gesetzt.

Kürzlich scheint die Website nach Erreichen von 20.000 UV an einem Tag und 500.000 PV langsam zu reagieren. Benutzer erhalten ihre Benachrichtigungen mehrere Stunden, nachdem sie tatsächlich stattgefunden haben.

Die CPU-Auslastung liegt bei etwa 15 %. Ich glaube daher, dass dies auf zu wenige Sidekiq-Worker zurückzuführen ist, und habe DISCOURSE_UNICORN_SIDEKIQS auf 10 und DISCOURSE_DB_POOL auf 13 gesetzt. Dies verursacht jedoch viele 500-Fehler auf vielen Seiten. Und ich denke, das ist zu viel für PostgreSQL.

Daher frage ich mich, ob Discourse ohne manuelle Einstellung automatisch auf einen 24-Kern-Server skaliert? Oder wie man die richtigen gleichzeitigen Parameter für eine große Website wie meine einstellt?

1 „Gefällt mir“

Der einfachste Weg, die Ressourcen automatisch zu skalieren, ist, ./discourse-setup erneut auszuführen, wodurch die app.yml mit neuen Werten für relevante Parameter neu erstellt wird.

1 „Gefällt mir“

Es gibt einige Themen zur Optimierung großer Websites. Wahrscheinlich müssen Sie Postgres mehr Speicher zuweisen.

2 „Gefällt mir“

Ja, ich habe versucht, max_connections und shared_buffers in Postgres zu ändern, und es scheint zu funktionieren.

Ich kann die Änderung von db_shared_buffers in app.yml sehen, aber shared_buffers von Postgres innerhalb des Containers scheint unverändert zu sein.

Mein Problem ist jedenfalls größtenteils gelöst. Vielen Dank.

1 „Gefällt mir“