Estamos testando nossa importação para o Discourse novamente, agora que essas alterações foram implementadas. Houve uma melhoria no carregamento de perfis (especialmente após o carregamento inicial, quando os dados estão no cache), mas ainda leva de 5 a 10 segundos para carregar alguns perfis. Há algo mais que possa ser feito para ajudar nisso? Estas parecem ser as consultas problemáticas:
Sim, para ambos. Testei com um usuário comum e, ao fazer logout, o comportamento parece ser basicamente o mesmo.
Tentei uma exportação e restauração (ref: Restore Failing - Check Free Disk Space), mas isso não parece ter alterado o comportamento. Vale mencionar que também recebo frequentemente um erro ao tentar visualizar essas páginas de perfil. Isso ocorre após vários segundos de tentativa de carregar a página.
Esse tópico tratava principalmente de várias consultas N+1 que tínhamos naquela rota, todas as quais já foram corrigidas.
A página do perfil de fato possui algumas consultas pesadas, pois gera um resumo muito personalizado e completo do usuário, mas um banco de dados de tamanho razoável deveria ser capaz de renderizá-la em menos de 500 ms.
Isso é um banco de dados grande para uma VM pequena. Você está executando tudo na mesma VM (Web+DB+Redis)?
Você está usando a versão mais recente do PostgreSQL 13? Pode tentar executar as tarefas de desempenho opcionais descritas em Atualização do PostgreSQL 13, tanto o vacuum quanto o reindex?
Os usuários com o problema são aqueles que têm muitas postagens. As páginas de perfil de usuários com poucas postagens carregam imediatamente, como esperado.
Talvez eu precise ajustar minhas expectativas aqui. 8 núcleos e 32 GB de RAM são considerados pequenos para o Discourse? (Sim, estamos executando como uma instalação de único container.) Em nosso software atual, estamos rodando esse fórum facilmente com 2 núcleos e 8 GB de RAM.
Quanto ao banco de dados, é um container recém-criado, então começou na versão 13.1. Seria necessário executar o vacuum e o reindex logo após uma restauração?
Eu iniciei isso pouco depois do seu post. O vácuo foi concluído muito rapidamente, mas o reindexamento ainda está em andamento, mais de 24 horas após o início. Isso é normal? Quanto tempo se espera que isso leve? Como posso verificar qual recurso (se houver) está limitado? Não vejo o postmaster usando mais de 2 a 4 núcleos na maior parte do tempo, e parece haver bastante RAM disponível.
Eu e o @Ghan temos trabalhado para aperfeiçoar e garantir que a importação funcione para nossa comunidade ao longo do último ano, mas a questão que, creio eu, está na minha mente é a seguinte: existem outras considerações que devemos ter ao importar uma comunidade com mais de 25 milhões de posts?
Existem comunidades desse tamanho no Discourse?
Notei, ao observar a lista pública de clientes, que, pelo menos entre os que consigo ver, ninguém está perto do nosso tamanho. Posso imaginar que existam apenas milhares ou dezenas de milhares de outros clientes que não consigo ver. Concluímos com sucesso nossa importação, que funciona do nosso lado, mas continuamos encontrando problemas como o de carregamento de perfil em contas com grande quantidade de posts e, agora, esse problema de reindexação.
Há algum conselho que possam nos dar para tornar essa transição mais suave?
Encontrei o comando rake db:stats em outro post.
O reindexamento ainda está em execução, então não tenho certeza se esses números são 100% definitivos.
Sim, como mencionei em outro tópico, temos instâncias com bancos de dados de 1 GB e instâncias com bancos de dados de 500 GB. Mas essas instâncias estão rodando em VMs de tamanhos completamente diferentes.
Como é o desempenho do disco no seu servidor? Ele usa discos rígidos antigos e mecânicos?
Sim. Não tinha certeza se o launcher definiria automaticamente alguns valores com base nos recursos que detecta na máquina host ou se existiam diretrizes recomendadas para o ajuste. Existe algum guia em algum lugar para o ajuste do banco de dados?
Há alguns comentários no app.yml, embora ele seja realmente otimizado para sites menores auto-hospedados. Provavelmente você vai querer aumentar as configurações lá (não me lembro dos nomes exatos). Você precisará consultar fontes mais gerais sobre PostgreSQL para obter mais informações.
Não é que o Discourse não consiga lidar com uma comunidade do seu tamanho; é apenas diferente de gerenciar uma menor e um pouco mais difícil.
Obrigado, com certeza vou dar uma olhada. Não estou familiarizado com o Postgres, mas espero que os mesmos princípios se apliquem depois de anos rodando o MySQL.
Com certeza. Sinto que, assim que conseguirmos avançar em relação a quais tipos de alterações precisam ser feitas, as coisas ficarão muito mais fluidas.