Come regolare i parametri per siti con traffico grande e pesante?

Sto gestendo una community con 38.000 utenti su una VM con 24 core e 64 GB di RAM. Ho impostato DISCOURSE_UNICORN_WORKERS a 48.

Recentemente il sito sembra rispondere lentamente dopo che gli UV raggiungono 20.000 un giorno e i PV raggiungono 500.000. Gli utenti riceveranno le loro notifiche diverse ore dopo che si verificano effettivamente.

Il carico di lavoro della CPU è intorno al 15%. Quindi credo che questo sia dovuto a pochi worker Sidekiq e ho impostato DISCOURSE_UNICORN_SIDEKIQS a 10 e DISCOURSE_DB_POOL a 13. Ma questo causa molti errori 500 in molte pagine. E penso che sia troppo grande per PostgreSQL.

Quindi, mi chiedo se Discourse si sta adattando automaticamente a un server da 24 core senza impostazioni manuali? O come impostare parametri di concorrenza appropriati per un sito di grandi dimensioni come il mio?

1 Mi Piace

Il modo più semplice che ho trovato per scalare automaticamente le risorse è rieseguire ./discourse-setup che ricrea il file app.yml con nuovi valori per i parametri pertinenti.

1 Mi Piace

Ci sono alcuni argomenti sull’ottimizzazione di siti di grandi dimensioni. Probabilmente devi dare più memoria a postgres.

2 Mi Piace

Sì, ho provato a modificare max_connections e shared_buffers in Postgres e sembra funzionare.

Posso vedere la modifica di db_shared_buffers in app.yml, ma shared_buffers di Postgres all’interno del container sembra invariato.

Comunque, il mio problema è quasi risolto. Grazie mille.

1 Mi Piace