Ik zoek deskundige begeleiding bij het optimaliseren van een Discourse multisite-installatie. Ik heb één web VM en een aparte database VM bij een grote cloudprovider. Hoewel beide machines redelijke specificaties hebben, merk ik dat mijn systeem wordt overweldigd door een groot aantal achtergrondtaken, wat de database lijkt te belasten.
Mijn huidige app.yml-configuratie is:
UNICORN_WORKERS: 4UNICORN_SIDEKIQS: 4DISCOURSE_SIDEKIQ_WORKERS: 10DISCOURSE_DB_POOL: 8
Op basis van mijn waarnemingen is de knelpunt niet het bereiken van een harde verbindingslimiet, maar eerder het grote aantal taken dat tegelijkertijd om databasebronnen concurreert. De wachtrijen in Sidekiq lopen constant vol, waardoor de site traag aanvoelt, zelfs voor basale administratieve taken.
Ik zoek een algemene aanpak om het systeem af te stemmen op stabiliteit en prestaties. Specifiek wil ik de best practices begrijpen voor:
- Sidekiq Concurrency: Hoe moeten
DISCOURSE_SIDEKIQ_WORKERSworden geschaald in een multisite-omgeving om een hoog taakvolume te verwerken zonder de database te belasten? - Scheiding van Wachtrijen: Wordt het aanbevolen om aparte Sidekiq-processen te draaien om verschillende wachtrijen te verwerken (bijv.
criticalvs.lowprioriteit)? Dit zou ervoor zorgen dat zware taken geen dringendere taken blokkeren.
Ik zoek geen oplossing die een grote architecturale verandering vereist of een overstap naar een andere webserver op dit moment, omdat ik het proces zo eenvoudig en risicoarm mogelijk wil houden. Ik hoop advies te krijgen over een veilige en effectieve weg vooruit.
Bedankt!