Sua conta de hospedagem ou servidor podem ficar lentos ou indisponíveis em caso de sobrecarga. Isto pode indicar que estão subdimensionados para o uso pretendido, sendo necessário acréscimo de capacidade de processamento, memória, I/O (disco) ou link.
Normalmente, no entanto, a sobrecarga pode ser motivada por scripts, queries (consultas ao banco de dados), ou mesmo páginas e includes (imagens, js, css) sem a correta otimização.
Seguem dicas que podem auxiliar na identificação do problema:
Bancos de Dados MySQL
- Análise e otimização da estrutura do banco de dados, como uso de índices corretos, normalização de dados e tipo de mecanismo de armazenamento (InnoDB e MyISAM).
- Análise detalhada das queries com o recurso EXPLAIN.
- Identificação e correção de queries lentas. Normalmente queries otimizadas são executadas em uma fração de segundo, e caso demorem mais do que isto, podem sobrecarregar o processamento e deixarão o sistema lento.
- Monitoramento de queries, e uso de recursos do sistema em tempo real. O phpMyAdmin provê estes recursos, na aba "Estado", opções "Processos" e "Monitor".
Scripts PHP
- Implementação de um contador de tempo de execução do script. Scripts normalmente são executados em centésimos ou milésimos de segundo (ex. 0.005s). Tempos de processamento acima disto podem evidenciar códigos que precisam de otimização.
- Análise da memória consumida pelo script através da função memory_get_peak_usage(). Scripts simples, que não utilizem funções de abertura de arquivos, por exemplo, costumam consumir menos de 1MB de memória.
- Diagnóstico de eventuais erros e alertas produzidor pelo script, habilitando-se a exibição total deles com as funções "error_reporting(E_ALL);" e "ini_set('display_errors', 1);".
- Para análise mais aprofundada dos scripts, existem ferramentas de "profiling" que auxiliam na identificação de gargalos, como XDEBUG e PHP Quick Profiler.
Otimizações de páginas e arquivos estáticos
- Identificação e otimização dos arquivos que representam o maior consumo de banda do site/sistema. Eles podem ser consultados através da área "Top 10 URLs By KBytes" do Webalizer, disponível na área de estatísticas do painel de controle. Normalmente, o consumo da transferência é bem dividido entre os arquivos e páginas do site, e casos onde poucos arquivos representem uma grande parcela da transferência, como uma única imagem consumindo 10% ou mais de todo tráfego, costumam indicar falta de otimização. No caso de imagens, é recomendada a redução das dimensões (resolução) para o tamanho real de exibição na página. Também é necessária a escolha do tipo correto arquivo, conforme a imagem (JPG, PNG e GIF) e otimização correspondente (compressão JPG ou redução de quantidade de cores GIF/PNG).
- Análise de arquivos client-side carregados junto ao seu site/sistema, como javascripts, CSS e imagens, de forma a identificar os mais pesados a serem otimizados, além de eventual redução da quantidade de arquivos. Sugerimos o uso da extensão Firebug do Firefox (aba Net) ou do Pingdom Website Speed Test.
- Uso de CDNs para hospedar conteúdo estático, como imagens, javascript, css e arquivos para download. Recomendamos a CloudFlare, que pode ser integrada ao seu domínio - consulte-nos para auxílio neste procedimento.
O servidor de hospedagem compartilhada trata-se de um ambiente de produção, e não de testes. Recomendamos fortemente que qualquer tipo de script e sistema seja previamente testado em ambiente próprio, e com ferramentas de teste de stress e que possibilitem a análise da demanda de disco, memória, processamento e rede. Para Windows sugerimos um servidor local, como o
Uniform Server (Apache + MySQL + PHP) para testes e homologação de sistemas, evitando que scripts problemáticos ocasionem sobrecarga em sua hospedagem / ambiente de produção.