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
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
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.