Otimizando um Discourse Multisite Grande: Gargalos de Banco de Dados e Sidekiq

Estou buscando orientação especializada para otimizar uma configuração multisite do Discourse. Tenho uma única VM web e uma VM de banco de dados separada em um grande provedor de nuvem. Embora ambas as máquinas tenham especificações decentes, estou descobrindo que meu sistema fica sobrecarregado com um grande volume de trabalhos em segundo plano, o que parece estar sobrecarregando o banco de dados.

Minha configuração atual do app.yml é:

  • UNICORN_WORKERS: 4
  • UNICORN_SIDEKIQS: 4
  • DISCOURSE_SIDEKIQ_WORKERS: 10
  • DISCOURSE_DB_POOL: 8

Com base nas minhas observações, o gargalo não é atingir um limite rígido de conexão, mas sim o grande volume de trabalhos competindo por recursos do banco de dados ao mesmo tempo. As filas no Sidekiq estão constantemente acumulando, o que torna o site lento, mesmo para tarefas administrativas básicas.

Estou procurando uma abordagem genérica para ajustar o sistema para estabilidade e desempenho. Especificamente, gostaria de entender as melhores práticas para:

  • Concorrência do Sidekiq: Como dimensionar DISCOURSE_SIDEKIQ_WORKERS em um ambiente multisite para lidar com um alto volume de trabalhos sem sobrecarregar o banco de dados?
  • Separação de Filas: É recomendado executar processos Sidekiq separados para lidar com diferentes filas (por exemplo, prioridade crítica vs. baixa)? Isso garantiria que trabalhos pesados não bloqueassem outros mais urgentes.

Não estou procurando uma solução que exija uma grande mudança arquitetônica ou a migração para um servidor web diferente neste momento, pois quero manter o processo o mais simples e de baixo risco possível. Espero obter conselhos sobre um caminho seguro e eficaz.

Obrigado!

3 curtidas

O Discourse deve ser capaz de adaptar automaticamente esses recursos com base nos recursos do seu sistema. Observe que é seguro executar novamente o script ./discourse-setup se você aumentou recentemente os recursos do seu sistema. O script pode se adaptar aos recursos aumentados e ajustar seu .yml de acordo.

2 curtidas

Parece que você precisa de menos?

Tenho certeza de que ele já sabe priorizar os trabalhos de alta prioridade.

2 curtidas

@itsbhanusharma @pfaffman Obrigado pela ajuda e pelas contribuições! Agradeço a ambos por dedicarem tempo para compartilhar sua experiência.

4 curtidas

Se o banco de dados for o gargalo, você considerou mudar para um tipo de instância maior para o seu banco de dados na nuvem?

1 curtida

Este tópico foi fechado automaticamente 30 dias após a última resposta. Novas respostas não são mais permitidas.