Tempo de resposta longo do servidor

4

Temos um site de alto tráfego, no máximo, tem 1000 de usuários simultâneos e, no mínimo, tem 100 usuários ao mesmo tempo. Em média, tem 40,000 a 100,000 visita por dia. O problema é, por vezes, carregar muito lento (nomeamos desta vez como tempo de desastre :)), em que quando tentamos carregar site com Firefox , mostra waiting... (eu tentei com muitos fornecedores em todo o mundo)

Monitoramos o servidor em desastre vezes, CPU load , Memory Usage são normais. O log de consultas também lento de MySQL não faz nenhuma consulta até 1 sec . Apache não tem erros. iotop não mostra nada que cause esse desastre.

É muito interessante que o tempo de desastre e os horários de pico não tenham relação alguma. Às vezes desastre acontece em 300 usuário simultâneo e outra vez diferente. Não consigo encontrar qualquer relação entre eles.

Como posso rastrear os pacotes no momento do desastre? Eu quero saber que esse desastre é culpa do nosso Data Center (como upstream ou firewall) ou falha do nosso servidor (como Apache configuration, web application ou qualquer outra coisa que eu não saiba).

Para dados adicionais, basta adicionar um comentário e, em seguida, editar minha pergunta para fornecer os dados que você precisa responder.

    
por superuser 31.07.2013 / 09:56

2 respostas

2

O número de usuários / visitas simultâneas não tem nada a ver com a capacidade / desempenho do sistema - é tudo sobre conexões simultâneas e o que essas solicitações estão fazendo.

Adicionar tempos de resposta de solicitação ao log do servidor seria um começo - se isso não refletir o problema, o problema provavelmente estará na rede. Percebo que você não faz referência aos registros do seu servidor na sua pergunta - você os verificou?

Você considera que tem volumes de tráfego altos e sua pergunta indica que você tem apenas um único servidor. Por quê? (vários servidores adicionariam complicações a esse específico, como a distribuição de carga, mas também simplificariam muito dos diagnósticos, no entanto, é um pouco mais difícil para o desempenho e a disponibilidade).

O rastreamento do número de conexões e seu estado também fornece dados essenciais para o diagnóstico do problema.

How can I trace the packets at disaster time?

Com um programa de captura de pacotes - isso pode estar sendo executado em qualquer lugar do cliente para o servidor. Eu uso o wireshark (disponível no Linux, MSWindows e outros)

Seria útil se você tivesse mencionado qual versão / MPM seu servidor está usando e em qual SO está sendo executado.

    
por 31.07.2013 / 13:32
2

Se você usa o Linux, pode usar tcpdump , por exemplo:

$ tcpdump dst port 80

Mas não acho que isso ajudaria muito. Eu tentaria eliminar tantas variáveis quanto possível. Meu primeiro pensamento é que isso pode ser um problema de rede.

Tente criar um log do Apache com tempos de resposta, assim:

LogFormat "\"%{%Y-%m-%d %H:%M:%S}t\" %V %m \"%U\" \"%q\" %{Content-Type}o %s %B %O %D" responsetime
CustomLog "/var/log/apache2/responsetime.log" responsetime

Em seguida, tente acessar o servidor da Web a partir de uma máquina / servidor no mesmo switch.

Se isso parecer normal, tente usar algo como time wget http://localhost/index.html -q --output-document=/dev/null para fazer isso na mesma caixa.

    
por 31.07.2013 / 14:46