Onde o gargalo costuma estar
| Gargalo | O que acontece |
|---|---|
| Processos do PHP | Todos ocupados com requisições lentas; as novas esperam |
| Banco de dados | Consultas lentas e travas em tabelas muito usadas |
| Conexões | Limite de conexões simultâneas ao banco atingido |
| Sessões em arquivo | Acesso concorrente a arquivos de sessão |
| Tarefas pesadas na requisição | Relatórios e importações segurando processos por minutos |
Como investigar
- Monitorar o servidor e o banco durante o pico
- Identificar as requisições mais lentas e mais frequentes
- Ver se há consultas esperando travas de outras
- Fazer um teste de carga em ambiente separado, simulando muitos acessos
Soluções em ordem de prioridade
- Otimizar as operações mais lentas e mais usadas (banco de dados lento)
- Tirar tarefas pesadas da requisição e levá-las para filas
- Usar cache para dados lidos com frequência
- Ajustar a configuração do PHP e do servidor web ao tamanho da máquina
- Só então escalar: servidor maior ou mais servidores
Escalar com vários servidores
Distribuir o acesso entre vários servidores exige que sessões, cache, arquivos e filas sejam compartilhados, não guardados em cada máquina. Sem esse preparo, usuários perdem a sessão ou arquivos “somem”. Veja servidor mais potente resolve? e sistema lento com o crescimento da empresa.
Resolvemos gargalos de desempenho no nosso serviço de manutenção de sistemas PHP e Laravel.