Como ajustar parâmetros para sites com tráfego grande e pesado?

Estou executando uma comunidade com 38 mil usuários em uma VM com 24 núcleos e 64 GB de RAM. Defini DISCOURSE_UNICORN_WORKERS para 48.

Recentemente, o site parece responder lentamente após o UV atingir 20 mil em um dia e o PV atingir 500 mil. Os usuários recebem suas notificações várias horas após o ocorrido.

A carga de trabalho da CPU está em torno de 15%. Portanto, acredito que isso se deve a poucos workers do Sidekiq e defini DISCOURSE_UNICORN_SIDEKIQS para 10 e DISCOURSE_DB_POOL para 13. Mas isso causa muitos erros 500 em muitas páginas. E acho que é muito para o PostgreSQL.

Portanto, gostaria de saber se o Discourse está escalando automaticamente para um servidor de 24 núcleos sem configuração manual? Ou como definir parâmetros de concorrência adequados para um site grande como o meu?

1 curtida

A maneira mais fácil que encontrei para dimensionar automaticamente os recursos é simplesmente executar ./discourse-setup novamente, o que recria o app.yml com novos valores para os parâmetros relevantes.

1 curtida

Existem alguns tópicos sobre ajuste de sites grandes. Provavelmente você precisa dar mais memória ao postgres.

2 curtidas

Sim, tentei modificar max_connections e shared_buffers no Postgres e parece funcionar.

Consigo ver a alteração de db_shared_buffers em app.yml, mas o shared_buffers do Postgres dentro do contêiner parece inalterado.

De qualquer forma, meu problema está praticamente resolvido. Muito obrigado.

1 curtida