Existem comandos como o rake posts:rebake (ou seja, após a migração).
Existem outros ou algo mais que acelere o fórum? Tenho a impressão de que, após a mudança de hospedagem para um servidor com mais RAM, ele ficou até mais lento. Mais GB não ajudou, mesmo que eu esteja testando sem tráfego. Estou me perguntando se há comandos que otimizam o banco de dados, etc., porque talvez seja por isso que navegar pelos links seja terrivelmente lento (1-2 segundos). É um pouco desqualificante em comparação, por exemplo, com o NodeBB.
Se você alterar a memória RAM do seu servidor, precisará executar discourse-setup novamente para ajustar as configurações de memória.
Qual é o tamanho do seu banco de dados? É uma importação ou uma comunidade nova? Quão rápido é o processador? A velocidade do núcleo único da CPU é crítica. Você usa SSD e não discos giratórios, certo?
O Lightsail é realmente voltado para aplicativos web e sites simples.
Você possui um núcleo de CPU, o que significa 2 workers do Unicorn, mas seu shared_buffers pode ser aumentado para 512 MB. Seu app.yml deve incluir este comentário:
Com 2 GB, recomendamos 3 a 4 workers; com 1 GB, apenas 2
Portanto, você está usando o dobro de workers com metade do tamanho de buffer recomendado.
Discos rígidos mecânicos (HDD) são o que existia antes dos SSDs, embora você também possa conhecê-los como hard drives ou HDs. Eles são muito lentos para o Discourse.
Essas configurações são normalmente definidas automaticamente pelo discourse-setup com base nas especificações do sistema (número de núcleos da CPU, quantidade de RAM) no momento em que o script é executado. Também é seguro executá-lo novamente se as especificações do seu servidor mudarem.
Existem muitas diferenças entre os tipos de instância da AWS. Algumas utilizam discos baseados em EBS, que acessam o disco pela rede, o que aumenta a latência. Outras possuem discos NVMe locais rápidos, mas não persistem os dados. Além disso, existem as famílias de instâncias Z e C, que oferecem desempenho de dados muito superior.
No entanto, tudo isso acaba sendo mais complicado e caro do que uma Droplet da DigitalOcean, que oferece desempenho aceitável para comunidades pequenas por US$ 5 e disponibiliza uma CPU bastante rápida em sua oferta otimizada para CPU por US$ 40.
A que oferta exatamente você se refere ao dizer ‘otimizada’?
Aliás, minha pergunta também se aplica aos próprios comandos. Ou seja, quais comandos (como “rake rebake posts”) devo executar para otimizar/reconstruir posts/limpar arquivos desnecessários etc.?
Por que haveria um comando secreto para deixar as coisas rápidas? Por que, em sã consciência, começaríamos com um modo lento?
Se você está enfrentando problemas de desempenho, precisa apresentar dados concretos. Qual é o caminho lento, qual o tamanho da comunidade, qual o tamanho do banco de dados, você tentou remover todos os plugins e temas, você tentou rodar em um droplet DO de $5, etc.
Sem intenção de culpar ninguém, especialmente porque eu mesmo não investiguei o assunto, particularmente a instância/configuração do PostgreSQL… mas o Discourse está extremamente lento. Não tenho certeza do que é responsável por isso, acho que o ORM do Ruby tem sua parte nisso.
Claro, você sempre pode adicionar hardware mais potente, mais SSDs, mais RAM… até certo ponto, mas isso não muda o ponto principal: o Discourse é bastante exigente/lento, mesmo para instalações pequenas, ele requer um servidor decente.
Eu discordo fortemente dessa afirmação. Conheço várias comunidades pequenas que operam em um VPS de $5. Uma instalação lenta do Discourse geralmente indica uma escolha inadequada de hospedagem ou má configuração.
Lembre-se de que o Discourse não é um site, é uma aplicação. Uma vez carregada no seu navegador, a quantidade de dados transmitidos para frente e para trás é mínima.
Se você seguir o guia de instalação padrão, que é a única instalação que suportamos aqui, todo o ajuste para CPU/RAM é feito automaticamente. Você não nos forneceu exemplos ou comparativos aqui; eu o encorajaria fortemente a fornecer alguns detalhes específicos.
Posso fazer alguns testes de desempenho, com certeza. Executo em uma virtualização de $5, com hardware realmente mínimo para os padrões de hoje, e sei disso. E não estava comparando com outras soluções de fórum, mas sei o que o PostgreSQL consegue lidar/entregar, mesmo quando executado em um container Docker em uma virtualização. Tenho quase 20 anos de experiência em desenvolvimento de banco de dados.
Ok, ok, e fiquei um pouco irritado com a atitude de “você roda em hardware do século passado, ou seja, discos mecânicos”
Vou reformular para: “o Discourse é mais exigente do que sistemas mais simples”.
Você pode dizer o que a palavra “má configuração” significa? Ela significa o que você pode realmente fazer de errado ao instalar um fórum limpo e adicionar no máximo 1 ou 2 plugins. Que configuração você está falando?
O que você considera desempenho adequado?
Descreva os cenários em que o desempenho lento está ocorrendo.
Como você determinou que a plataforma Discourse (ou até mesmo sua hospedagem) é a fonte do desempenho lento? Que o banco de dados é um fator limitante, etc.
Talvez você pudesse compartilhar alguns links do webpagetest.org como ponto de partida.
Embora isso seja tecnicamente justo, acho que perde o ponto sob a perspectiva de crescimento da comunidade e experiência do usuário (UX). Há muito a se dizer sobre a quantidade de tráfego que nossas comunidades atraem por meio de buscas.
Na minha opinião, é importante que a primeira visita a esse link carregue rapidamente.
E é isso mesmo — excluindo comunidades pesadas em ativos, como a NPN, não vejo muitas comunidades Discourse com tempos de carregamento final acima de dois segundos, e o DOMContentLoaded geralmente fica bem abaixo de 1000ms.
O WebPageTest é uma métrica terrível: abra um navegador, inspecione o código-fonte da página, vá para a aba de rede, limpe o cache e force um recarregamento completo. Todos os números estão bem na sua frente.
Você está sugerindo que há um problema, mas não está nos dando exemplos. Seria muito bom se você pudesse fundamentar essas alegações.
É uma ferramenta perfeitamente válida que pode ser usada como ponto de partida ou para explorar cenários específicos (SO, localização, largura de banda, latência), se desejar. Também é uma maneira conveniente de compartilhar um resultado de um cenário controlado para que outras pessoas o analisem.
A aba de rede também é perfeitamente válida, desde que você entenda que está vendo literalmente apenas a sua própria experiência, provavelmente do seu desktop, pela conexão que você está usando. É um bom teste de litmus; leva apenas alguns segundos e pode ou não fornecer o que você precisa para otimizar para seus visitantes.
Ambas têm mérito. Nenhuma delas é uma “métrica terrível” de forma alguma.
@eextra, vale mencionar também que você deve ter um contador de tempo de resposta visível quando estiver logado no Discourse como administrador. Você também tem a capacidade de registrar relatórios de desempenho do NGINX pelo painel administrativo.
O que há de tão ruim em sites de teste de velocidade de sites?
Queria dar minha contribuição, pois os uso bastante e os acho úteis. Especialmente aqueles que testam em múltiplos locais e realizam várias medições em uma única execução.
É interessante que obtenho resultados diferentes nesses sites em comparação ao meu navegador quando se trata de otimizações que envolvem 100–200 ms, embora pareçam precisos para tempos maiores que isso.
Às vezes, opto por otimizações que agradam os sites de teste de velocidade, pois, se todos relatam medições semelhantes, assumo que o Google também o faz — embora eu possa estar errado, já que seu algoritmo é fechado.
Ruby é uma linguagem notoriamente lenta, o Discourse utiliza uma quantidade enorme de JavaScript, e não há muita discussão sobre o fato de que o tempo de carregamento inicial de um fórum Discourse é longo e que a velocidade no mobile é ruim. Acho que dizer às pessoas que elas obterão ótimos resultados de velocidade com o hardware adequado não é muito preciso, já que estou navegando no Meta agora e ele é, de fato, lento em comparação, digamos, a um fórum programado em Go, rs. Só uso o Discourse porque funciona bem, tem excelente proteção contra spam, ótimos recursos e é de baixa manutenção. Nunca o considerei rápido, nem a maioria dos visitantes de fóruns o vê como um “aplicativo” ao clicar naquele primeiro link do Google para acessar o site.