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: 4UNICORN_SIDEKIQS: 4DISCOURSE_SIDEKIQ_WORKERS: 10DISCOURSE_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_WORKERSem 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íticavs.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!