Este é um assunto extenso e raramente é resolvido de forma fácil e objetiva. Voce pode ter um website hospedado em um super servidor exclusivo seu e, mesmo assim, ter problemas de performance. Neste assunto, nenhum site é igual ao outro. Até mesmo dois websites desenvolvidos sob o mesmo framework de wordpress podem ter problemas de performance completamente diferentes. E pra complicar ainda mais: O mesmo site pode funcionar de forma rápida para desktops e lento em dispositivos móveis.
Existem vários fatores que podem causar lentidão no seu site:
- Problemas no sistema operacional
- Problemas de configuração no Webserver
- Problemas no banco de dados
- Problemas de desenvolvimento de websites
- Host ou hospedagem mal dimensionada
- Imagens muito grandes e pouco otimizadas
- Ataques automatizados de bots
Oh Deus! O que fazer?
O primeiro passo para determinar a performance de um website é analisar o problema com muito cuidado. Geralmente o primeiro passo que eu dou quando alguem reclama que um website está lento é colocá-lo sob a avaliação do google, através da ferramenta PageSpeed Insights no link abaixo:
https://developers.google.com/speed/pagespeed/insights/
Esta ferramenta carrega seu site e analisa cada detalhe do que está acontecendo, mede o tempo de resposta e faz valiosas sugestões de como os problemas podem ser resolvidos. Sob o ponto de vista do programador do site, muitas sugestões aqui podem ser bem vindas.
A partir de agora vou comentar os problemas mais comuns em otimização de sites
Concorrência no sistema operacional
Seu website precisa de um webserver para rodar. E seu webserver está sendo executado e controlado por um sistema operacional. Eu gosto mais de usar linux e/ou unix para gerenciar um webserver de peso. Primeiro, por que este tipo de sistema operacional é muito mais eficiente em gestão de multi-threads, que é um recurso muito importante para um webserver, do que os demais sistemas operacionais. Entretanto, se voce possui um unico servidor rodando serviço de email, multiplos websites, sistema de arquivos compartilhados, voce está exigindo mais de um mesmo servidor. Caso seja esse o seu cenário e seu website esteja lento, talvez uma boa estratégia seja separar os serviços em mais de um servidor. Observe que, no caso do linode.com abaixo, separar um mailserver e um webserver não mudaria em nada seus custos de cloud server. Por exemplo, voce poderia utilizar um servidor de US$ 40,00 mensais juntando os dois serviços ou então separar a carga em dois cloud servers de US$ 20,00.
Migrar um dos sistemas para outro cloud server pode gerar ganhos de performance imediatos. Eu usei o mailserver como exemplo, mas isso pode se aplicar a bancos de dados ou outros sistemas…
Problemas de configuração no Webserver
Um webserver mal configurado pode ser a causa de lentidão no site. Uma boa estratégia para identificar problemas em seu webserver é olhar os logs. Geralmente logs de apache e nginx costumam apontar problemas claramente e estes arquivos são um primeiro passo para começar uma análise. No linux, todos os logs ficam no diretório /var/log. Procure pelo diretório específico do seu webserver e analise os logs. Leia os arquivos com calma, tanto do seu webserver como do seu sistema operacional. Este ultimo pode ser o arquivo messages ou mesmo syslog dentro do mesmo diretorio /var/log.
Pessoalmente, gosto de separar os logs de cada site que estou hospedando no apache de forma separada, em acesso e erros. Isso ajuda muito a identificar problemas rapidamente. Veja mais detalhes sobre logs do apache aqui.
Uma outra boa idéia é verificar se seu webserver está executando a ultima versão e dos demais softwares necessários, como o PHP, por exemplo. Entretanto, mudar bruscamente a versão de PHP pode lhe causar mais problemas do que solucionar os existentes. Converse com seu programador antes de pensar em executar essa mudança.
Problemas de configuração no Banco de Dados
Dependendo do tipo de website que voce possui, este pode ser um dos culpados da lentidão. Bancos de dados, mesmo grandes, não precisam ser lentos. Todos os bancos de dados possuem uma ferramenta propria para análise de queries lentas. O MYSQL possui uma ferramenta bem robusta e conhecida: O mysql_slow_query_log.
Entretanto, muitos dos problemas de lentidão que enfrentei com banco de dados eram relacionados a queries mal escritas. Uma junção de tabelas é um produto cartesiano de uma quantidade enorme de dados e, caso voce não saiba exatamente o que está fazendo, pode acabar juntando duas ou mais tabelas muito grandes que não possuem indices entre si e o resultado será extremamente lento.
Para achar a causa do problema de lentidão em um banco de dados, o primeiro passo seria ativar o mysql_slow_query_log e começar a análise dos problemas por ali. O postgresql tambem possui um mecanismo semelhante.
Problemas de desenvolvimento de websites
Este é um tópico extenso, que poderia render seu proprio post, mas vamos tentar concatenar as principais idéias.
Hoje em dia, montar um site é, em 99% dos casos, partir de algo semi-pronto, modificando ou incrementando um template pago ou gratuito, transformando-o em algo mais customizado. Voce pode criar um website empresarial a partir de um wordpress, ou uma loja virtual a partir do magento ou mesmo desenvolver uma idéia particular usando algum framework diferente. Mas quase ninguem hoje em dia programa uma idéia a partir do zero. Geralmente usa-se um framework pronto.
Dependendo do seu site ou seu objetivo, é preciso pensar muito bem no que voce quer que seu site seja. Se voce está oferecendo um serviço que terá muita concorrencia, é importante que seu site carregue rápido e tenha um otimo SEO, para que seus clientes encontrem voce rapidamente através dos buscadores, antes dos seus concorrentes. Se quer uma loja virtual bem customizada, deverá partir para um magento ou mesmo um woocommerce. Ou se quer algo bem leve, pode partir de um simples bootstrap. O ponto mais importante é que seja escolhido um framework adequado aos seus planos, para que não haja surpresas quando precisar extrair performance do seu sistema.
De qualquer maneira, um website mal projetado ou mal programado pode lhe gerar custos acima do previsto. Não é uma boa idéia economizar no seu desenvolvimento, queimando etapas. É muito importante que seu site seja projetado e otimizado da melhor forma possivel.
Host ou hospedagem mal dimensionada
Esta é uma solução que pode resolver ou minimizar alguns problemas, mas nem todos. Se voce usa um serviço de hospedagem compartilhada de provedor, migrar seu site para um VPS ou cloud server pode trazer uma ganho enorme de performance para voce. Dependendo do tipo do seu website, alguns projetos nem sequer seriam cogitados em hospedagem compartilhada.
Se voce já possui o seu website hospedado em um cloud server, um aumento de hardware no seu servidor pode tambem trazer ganhos e agilidade no processamento das suas aplicações. A linode.com recentemente passou a oferecer alguns planos de cloud server com CPUs dedicadas para suas VMs. Se seu sistema requer muito processamento e possui muita concorrencia, uma CPU dedicada pode trazer aquele ganho de performance que está faltando.
Além do linode.com, a digital ocean também traz planos com CPUs dedicadas. Veja os comparativos abaixo:
Digital Ocean – Planos com CPUs dedicadas (09/2019)
Linode.com – Planos com CPUs dedicadas (09/2019)
Se voce precisa de serviços de gestão e projeto de cloud server, conheça nossos serviços especializados aqui.
Imagens muito grandes ou mal otimizadas
Imagens grandes podem influenciar muito na performance do seu site, especialmente para dispositivos móveis. Existem muitas soluções interessantes, mas a que traz mais resultado é usar uma CDN especializada nesse tipo de conteúdo. CDN significa Content Distribution Network ou Rede de Distribuição de Conteúdo. Na pratica, esse serviço oferece a voce um gestor de arquivos de multimedia e, com isso, permite que haja uma separação física do carregamento das imagens do seu website pelo cliente que está navegando no seu site. Ou seja, enquanto seu servidor fica responsável por entregar apenas o código ao usuário, a CDN irá se encarregar de enviar as imagens. Em um ambiente de alta concorrência dos recursos do servidor, essa estratégia gera um ganho de performance muito bom para seu website com um custo muito baixo.
Nesse sentido, gosto muito dos serviços do Cloudflare
Ataques automatizados de robôs
Além de todos esses possiveis problemas, ainda existe a possibilidade de estar havendo ataques no seu site. Pela minha expertiência, a maioria dos ataques robotizados vêm dos países da Asia. E, devido à insistência desses robos em descobrir senhas de serviços, o melhor a fazer é aproveitar o próprio Cloudflare. Seu recurso de firewall é bem funcional e muito eficiente.
Veja abaixo um log do cloudflare das ultimas atividades bloqueadas de um website de um cliente que apenas atende o Brasil. Por que tantos acessos vindos da Russia e da China? Hummm…
Para impedir esse tipo de atividade suspeita, eu configuro apenas para os países “suspeitos” um desafio com captcha. Se for um acesso legítimo, a pessoa irá resolver o captcha e se conectar sem maiores problemas. Veja a regra abaixo.
Estas foram 7 abordagens que podem ser usadas para analisar as causas de problemas de lentidão que podem estar acontecendo no seu website. Claro que muitos outros problemas tambem podem causar lentidão.
Importante saber que, além de performance, seu site também precisa de um backup automatizado. Recomendo conhecer o iDrive, clicando no link abaixo.
Se preferir, tambem tenho um post sobre o iDrive aqui.