Com o balanceamento de carga implantado, os sites ainda podem apresentar falhas. Normalmente, isto deve-se a uma configuração incorrecta, recursos insuficientes ou problemas de aplicação. Aqui estão alguns passos e sugestões para resolver o problema.
1. Diagnosticar o problema
Em primeiro lugar, precisamos de ver o servidor Web (por exemplo, Apache ou Nginx) e os registos de erros do PHP. Isso pode ser feito com o seguinte comando
Registos do Apache #
cat /var/log/apache2/error.log
# Registos Nginx
cat /var/log/nginx/error.log
# Registos de PHP
cat /var/log/php-error.log
Também é importante monitorizar o desempenho do servidor. É possível monitorizar o desempenho do servidor utilizando uma ferramenta comotopo
talveziotop
Tais ferramentas de controlo em tempo real.
2. Otimização dos recursos e da configuração do servidor
Se se verificar que a CPU ou a memória do servidor está a atingir regularmente os seus limites, poderão ser necessários recursos adicionais. Também é fundamental otimizar o desempenho da base de dados, incluindo o ajuste da cache de consulta e a otimização dos índices.
3. Ajuste da configuração do PHP
existirphp.ini
para ajustar os seguintes parâmetros:
memory_limit = 256M
tempo_de_execução_máx = 60
Para os casos em que o PHP-FPM é usado, é necessário fazer ajustes na variável/etc/php/7.x/fpm/pool.d/www.conf
(7.x adaptado para versões específicas) nos parâmetros:
pm = dinâmico
pm.max_children = 50
pm.start_servers = 10
pm.min_spare_servers = 5
pm.max_spare_servers = 35
4. Configuração do servidor Web
Para o Apache, editar/etc/apache2/apache2.conf
para ajustar os seguintes parâmetros:
MaxRequestWorkers 250
MaxConnectionsPerChild 1000
KeepAliveTimeout 5
Para o Nginx, edite/etc/nginx/nginx.conf
::
worker_processes auto; worker_connections 1024;
worker_connections 1024; keepalive_timeout 15;
worker_processes auto; worker_connections 1024; keepalive_timeout 15;
5. Configuração de rede
Verificar e otimizar os parâmetros TCP do servidor. Isto pode ser feito na secção/etc/sysctl.conf
Adicionar ou ajustar as seguintes definições na secção
net.ipv4.tcp_fin_timeout = 30
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
depois executar sysctl -p
Tornar as alterações efectivas.
6. Afinação do balanceador de carga
Certifique-se de que o balanceador de carga está configurado corretamente, especialmente as definições de distribuição de peso e de verificação de saúde.
7. Ajustes a nível da aplicação
No caso de problemas com o código da aplicação, pode ser necessária a otimização e a depuração por programadores especializados.
8. Controlo de segurança
Certifique-se de que o sítio Web não está a ser alvo de um ataque DDoS e que as medidas de segurança, como as firewalls, estão a funcionar corretamente.
9. mecanismo de cache
Implementar uma estratégia de armazenamento em cache, como a utilização de ferramentas como o Varnish ou o Redis.
10. Reinicialização e manutenção
Por vezes, o simples facto de reiniciar o servidor Web ou o serviço PHP-FPM pode resolver o problema:
# Reiniciar o Apache
sudo systemctl restart apache2
# Reiniciar o Nginx
sudo systemctl restart nginx
# Reiniciar o PHP-FPM
sudo systemctl restart php7.x-fpm
11. teste de desempenho
Teste com uma ferramenta de teste de esforço, como o Apache Bench ou o JMeter, para identificar estrangulamentos de desempenho.
12. Consultoria profissional
Se os passos acima indicados não resolverem o problema, recomenda-se que contacte o apoio técnico profissional. Por exemplo, contacte-nos! Basta contactar o serviço de apoio ao cliente.