Monitore o desempenho de um servidor Apache

Quando você deseja monitorar um servidor apache, devemos conhecer alguns aspectos:

  • Quantas solicitações pode suportar
  • Velocidade com que responde às solicitações
  • Qual é o tempo de espera
  • Quais aplicativos ou serviços podem ser melhorados ou otimizados
Para medir o desempenho de um servidor, usaremos uma ferramenta chamada Apache Benchmark ou ApacheBench.

ApacheBenchApacheBench é um software de computador que roda em linha de comando para medir o desempenho, especialmente de servidores web e serviço http. Este software foi desenvolvido para testar o servidor Apache HTTP, mas sendo uma ferramenta para testar serviços http é possível utilizá-lo para testar qualquer servidor web como Nginx, Lighttpd.

Ferramenta ApacheBench ele está nos repositórios do Linux e como uma biblioteca no servidor Apache e, portanto, é um software de código aberto gratuito e usa a licença Apache.

Esse tipo de teste é muito fácil de fazer de forma rápida usando o comando ab do Apache Bench.

Este teste nos mostrará rapidamente se há um problema imediato com a instalação do Apache e, portanto, ele responde mal.

Também nos ajuda com a seguinte pergunta Até onde posso usar ou forçar o servidor e seus recursos da web com Apache, PHP e MySQL? (com conexões simultâneas e página de solicitação de carga), além do que precisamos otimizar na configuração do Apache e do PHP para obter um melhor performance e eliminar os problemas de resposta às solicitações dos visitantes.

1. Instalando ApacheBench em servidores Linux


Ubuntu / Debian
 sudo apt-get install -y apache2 sudo apt-get install apache2-utils

Redhat / Centos

 yum install httpd-tools

Vamos realizar testes com diferentes domínios e ip. Começaremos abrindo uma janela de terminal e realizaremos os seguintes testes:

Servidor local ou localhost também ip 127.0.0.1

 ab 127.0.0.1/
localhost

2. Consultas


Vejamos uma consulta com parâmetros. Enviamos 100 solicitações em grupos de 30 por vez para google.com e salvamos os dados obtidos em um arquivo csv, o código é o seguinte:
 ab -g data.csv -n 100 -c 30 google.com/

Nós analisamos o resultado

 Software do servidor: GFE / 2.0 // Site operacional Servidor da web do Google baseado em Linux Nome do host do servidor: google.com Porta do servidor: 80 Caminho do documento: / Comprimento do documento: 262 bytes Nível de simultaneidade: 30 Tempo gasto para testes: 1.370 segundos Solicitações completas: 100 Solicitações com falha: 0 Respostas não 2xx: 100 Total transferido: 53100 bytes HTML transferido: 26200 bytes Solicitações por segundo: 73,01 [# / seg] (média) // média por solicitação Tempo por solicitação: 410,899 [ms] (média) / / média por solicitação Tempo por solicitação: 13,697 [ms] (média, em todas as solicitações simultâneas) // média por taxa de transferência total: 37,86 [Kbytes / s] Tempo de conexão recebido (ms) // Tempo de conexão, processo e espera mínimo médio [+/- sd] mediana máx. Conectar: ​​42 81 53,0 73 446 Processamento: 48 190 265,7 88 1286 Em espera: 46 114 148,2 86 1246 Total: 114 270 274,7 150 1369 Porcentagem de solicitações atendidas em um determinado tempo (ms) 50% 150 66% 203 75% 222 80% 243 90% 844 95% 953 98% 1088 99% 1369 100% 1369 (solicitação mais longa)

Vemos que ele respondeu a 73 solicitações por segundo com um tempo médio por solicitação de 410.899 milissegundos e uma taxa de transferência de 37,86 Kbytes / s, vemos também como varia a conexão, o processo e o tempo de espera.

O arquivo de dados CSV terá a seguinte estrutura.

Estrutura CSV

 (hora de início) Ter 24 de março 11:53:03 2015 - (segundos) 1427208783 - (hora c) 46 - (hora d) 68 - (hora t) 114 - (esperar) 66 (hora de início) Ter 24 de março 11:53:03 2015 - (segundos) 1427208783 - (ctime) 46 - (dtime) 74 - (ttime) 120 - (esperar) 72 (starttime) Ter 24 mar 11:53:03 2015 - (segundos) 1427208783 - (ctime) 64 - (dtime) 56 - (ttime) 120 - (espere) 56

A seguir, a partir do terminal com um editor de texto, criaremos um arquivo de texto para avaliar vários urls do mesmo domínio. Ferramenta ApacheBench suporta até 20 mil URLs como o seguinte.

O arquivo terá a seguinte estrutura:

 http://example.com/index.html/ http://example.com/news.html/ http://subdomain.example.com/
Testamos um pedido de cada vez:
 ab -g data.csv -n 1000 urls.txt
Neste caso, ApacheBench coletar os endereços de urls.txt e enviar solicitações ao servidor. O nome de domínio dos URLs deve ser o mesmo para todos os URLs.

Caso em que 10 usuários simultâneos cada um faz 10 visitas ao site
São cerca de 100 páginas que são carregadas por 10 usuários diferentes simultâneos e recorrentes, cada usuário está fazendo 10 páginas que carregam ou são mostradas sequencialmente a cada solicitação.

Nós testamos:

 ab -l -r -n 100 -c -k 10 http://www.eexample.com/clients/
Isso representa uma carga máxima em um site que recebe cerca de 100.000 visitas por mês que deve ser suportado e respondido pelo servidor.

Caso em que 50 usuários simultâneos visitam a mesma página da web 20 vezesTrata-se de servidor respondendo a 1000 páginas, ou seja, 50 usuários para 20 requisições ao mesmo tempo, cada usuário fazendo 20 consultas às páginas em sequência:

 ab -l -r -n 1000 -c -k50 http://www.eexample.com/chat/
Isso pode ser usado para testar um blog ou um sistema onde os usuários ou visitantes comentam muito, enviando muitos pedidos, como um chat ou sistema de comentários como o Facebook.

Esse tipo de teste pode ser equivalente ao tráfego de um site ou blog muito ativo.

Teste rápido de PHP e MySQLCriamos qualquer banco de dados mysql ou se tivermos um para testar o usamos, então criamos o script php chamado absql.php

 Teste AB de Php e MySQL 
Enviamos 10.000 solicitações para o script e, portanto, para o MySQL.
 ab -n 1000 -c 5 http://190.165.210.108/absql.php

Analise os resultados de cada teste com ApacheBench. Os dados mais importantes são aqueles que nos fornecem informações sobre as solicitações e respostas do servidor:

Analise os resultados do ApacheBench1 Quantas solicitações por segundo o servidor pode atender exibindo? Os outros indicadores não são muito úteis porque não são representativos de algo real neste contexto.

2. Há algum erro na página da web ou configuração do Apache? Quando o servidor demora para responder ou trava, devemos analisar se há problemas de memória ou alto consumo de recursos.

3. Em que nível de simultaneidade o servidor Apache começará a ficar lento ou travar e quanto tempo levará o tempo de espera? Se isso está acontecendo em um baixo nível de simultaneidade, algo está errado, devemos saber o que é e o que é necessário para que funcione, talvez mais recursos do servidor.

3. Fatores a serem considerados para melhorar o desempenho no Apache


Desempenho Apache1 Módulo Mod_cache do Apache para a página de cache de solicitação / resultados. Isso produzirá uma melhoria de desempenho de 5 a 10x em relação a todos os outros métodos combinados.

2. php_memcache gerencia o cache de dados para scripts e consultas PHP. Isso pode produzir um aumento de desempenho de 50% -100% nas páginas da web.

3. Plugins de cache para Joomla, WordPress, PrestaShop e alguns Frameworks ou CMS.

4. Módulo Mod_expires O Apache para usar o cache do visitante e manter as páginas por um certo tempo, ao invés de fazer uma solicitação a essas páginas novamente e ter que recarregar, ele funciona se a web não mudar seu conteúdo a cada minuto.

Outro aspecto que afeta muito o desempenho do Apache é PHP e MySQL, melhorando o desempenho do MySQL otimizando a configuração do arquivo my.ini de xampp, wampp ou lampp e otimizar as queries ou requisições para a web que usa php e gera conteúdo do MySQL, tentando otimizar o uso do log de consultas lentas do MySQL para ver qual é o problema e melhorar o desempenho.

Se você quiser mais informações sobre como usar AppacheBench.

Gostou e ajudou este tutorial?Você pode recompensar o autor pressionando este botão para dar a ele um ponto positivo
wave wave wave wave wave