Comment ajuster les paramètres pour un site à trafic important et lourd ?

Je gère une communauté de 38 000 utilisateurs sur une VM 24 cœurs et 64 Go. J’ai défini DISCOURSE_UNICORN_WORKERS à 48.

Récemment, le site semble répondre lentement après que le nombre d’utilisateurs uniques (UV) ait atteint 20 000 un jour et le nombre de pages vues (PV) 500 000. Les utilisateurs reçoivent leurs notifications plusieurs heures après qu’elles se soient réellement produites.

La charge de travail du CPU est d’environ 15 %. Je pense donc que cela est dû à un nombre insuffisant de workers Sidekiq et j’ai défini DISCOURSE_UNICORN_SIDEKIQS à 10 et DISCOURSE_DB_POOL à 13. Mais cela provoque de nombreuses erreurs 500 sur de nombreuses pages. Et je pense que c’est trop pour PostgreSQL.

Je me demande donc si Discourse s’adapte automatiquement à un serveur 24 cœurs sans réglage manuel ? Ou comment définir les paramètres de concurrence appropriés pour un grand site comme le mien ?

1 « J'aime »

La façon la plus simple que j’ai trouvée pour adapter automatiquement les ressources est de relancer ./discourse-setup qui recrée le fichier app.yml avec de nouvelles valeurs pour les paramètres pertinents.

1 « J'aime »

Il existe quelques sujets sur l’optimisation des grands sites. Vous devrez probablement allouer plus de mémoire à postgres.

2 « J'aime »

Oui, j’ai essayé de modifier max_connections et shared_buffers dans Postgres et cela semble fonctionner.

Je peux voir le changement de db_shared_buffers dans app.yml, mais le shared_buffers de Postgres à l’intérieur du conteneur semble inchangé.

Quoi qu’il en soit, mon problème est en grande partie résolu. Merci beaucoup.

1 « J'aime »