Correção : o tempo de resposta ( %D
) não é ms! 1 1
Isso não muda nada sobre a estranheza desse padrão, mas significa que é praticamente muito menos devastador.
Por que o tempo de resposta está inversamente correlacionado para solicitar a frequência?
O servidor não deve responder mais rapidamente quando está menos ocupado processando solicitações?
Alguma sugestão de como fazer o Apache "tirar vantagem" de menos carga?
Esse padrão é periódico. Isso significa que ele será exibido se as impressões caírem abaixo de cerca de 200 solicitações por minuto - o que acontece (devido à atividade natural do usuário) do início da noite até o início da manhã.
Os pedidos são POSTs muito simples, enviando um JSON com menos de 1000 caracteres - esse JSON é armazenado (anexado a um arquivo de texto) - é isso. A resposta é apenas "-".
Os dados mostrados nos gráficos foram registrados com o próprio Apache:
LogFormat "%{%Y-%m-%d+%H:%M:%S}t %k %D %I %O" performance
CustomLog "/var/log/apache2/performance.log" performance
fonte
Respostas:
Esse é um comportamento comum nos datacenters. O tempo em que o tempo de resposta é lento corresponde ao que é comumente chamado de Janela de Lote. É um período em que a atividade do usuário deve ser baixa e processos em lote podem ser executados. Os backups também são feitos durante esse período. Essas atividades podem sobrecarregar os recursos do servidor e das redes, causando problemas de desempenho, como você vê.
Existem alguns recursos que podem causar problemas:
Eu uso
sar
para investigar emitidos assim.atsar
pode ser usado para coletarsar
dados em arquivos de dados diários. Eles podem ser examinados para ver como é o comportamento do sistema durante o dia, quando o desempenho é normal, e sobrescrever, quando o desempenho é variável.Se você estiver monitorando o sistema com
munin
ou algum outro sistema que reúna e represente graficamente a utilização de recursos, poderá encontrar alguns indicadores lá. Ainda achosar
mais preciso.Existem ferramentas como
nice
eionice
que podem ser aplicadas a processos em lote para minimizar seu impacto. Eles são eficazes apenas para problemas de CPU ou E / S. É improvável que eles resolvam problemas com a atividade de memória ou rede.Movendo a atividade de backup para uma rede separada e reduza a contenção da rede. Alguns softwares de backup podem ser configurados para limitar a largura de banda que será usada. Isso pode resolver a contenção da rede.
Dependendo de como os processos em lote são acionados, você poderá limitar o número de processos em lote em execução em paralelo. Isso pode realmente melhorar o desempenho dos processos em lote, pois eles provavelmente estão enfrentando a mesma contenção de recursos.
fonte
sar
pode ser útil. Eu encontrei esta: en.wikipedia.org/wiki/Sar_(Unix)Essa relação pode ocorrer na outra direção se os remetentes da solicitação aguardarem a conclusão de uma solicitação anterior antes de enviar uma nova. Nesse caso, o tráfego diminui conforme o tempo de solicitação aumenta (por qualquer motivo), devido ao enfileiramento do lado do cliente.
Ou pode ser um artefato da sua medição - se o gráfico acima mostra solicitações concluídas , em oposição às solicitações de chegada , a taxa diminui conforme o tempo de processamento da solicitação aumenta (assumindo capacidade finita: D).
fonte
Embora a resposta do @ BillThor possa estar correta, parece improvável que o período de baixa carga seja totalmente ocupado pelos processos de backup (ou seja, que os períodos correspondam com precisão).
Uma explicação alternativa é simplesmente o armazenamento em cache. Se um determinado script / banco de dados / o que não tiver sido usado recentemente, os dados em cache relevantes podem ter sido descartados para liberar memória para o restante do sistema operacional. Podem ser índices em um banco de dados ou buffers de O / S em relação a um arquivo ou qualquer outra coisa semelhante. Uma consulta precisará reconstituir essas informações se já faz algum tempo desde a última consulta. Nos períodos de maior movimento, isso não ocorrerá, pois a última consulta será frequente. Isso também explicaria por que você vê baixos tempos de resposta e altos tempos de resposta durante o período ocupado.
fonte
strace
o processo Apache, não veráread()
chamadas do sistema ou similares? Isso seria bem incomum.echo 3 > /proc/sys/vm/drop_caches
cada 5 segundos por um minuto e veja se você obtém efeitos semelhantes no tempo de resposta.O que você está vendo lá parece, para mim, como um problema estatístico. Pode não ser, a resposta de @ BillThor pode estar certa, mas vou postar isso por completo.
Os gráficos do tempo de resposta são baseados em percentis. Um conjunto de amostras de 800-1000 solicitações é uma boa contagem de amostras para isso, um conjunto de 50 a 100 solicitações talvez não tanto.
Se você presumir que o número de solicitações lentas não é uma função linear do volume de solicitações, de modo que um aumento de ordem de magnitude nas solicitações não resulte em um aumento de ordem de magnitude nas solicitações lentas, volumes maiores de solicitações resultarão em menor tempo médio de solicitação.
fonte
Existem mentiras, grandes mentiras e estatísticas.
Minha hipótese: você tem três categorias distintas de solicitações:
À noite, os 50 pedidos por minuto são correspondentemente 20 + 20 + 10. E assim, o resultado do percentil de 50% agora depende fortemente do resultado do fluxo 2. E o percentil de 95% depende do fluxo 3, para que ele nunca seja exibido no gráfico.
Durante o dia, os fluxos 2 + 3 ficam bem escondidos acima do percentil 95%.
fonte
Quanto mais eu olho para ele, mais inclinado a pensar que há um problema com a coleta de dados.
Primeiro, há algo realmente estranho acontecendo com o seu TPS. Embora o padrão geral pareça normal, ocorre uma interrupção muito acentuada por volta das 21h e depois novamente às 7h. Um gráfico normal será muito mais suave durante a transição para os horários de menor movimento.
Isso sugere que há uma alteração no perfil e você pode ter dois tipos distintos de clientes:
A segunda dica é por volta das 18:00. Na maioria das vezes, antes e depois, temos o perfil de alto volume - TPS alto e baixa latência. Mas por volta das 18:00, há uma queda repentina de 800-1000 RPM para menos de 400 RPM. O que poderia causar isso?
A terceira dica é a redução nos tempos de resposta do 5º percentil. Na verdade, eu prefiro observar os tempos de resposta mínimos (mas o 5º percentil é possivelmente melhor) por dois motivos: informa o tempo de serviço (ou seja, tempo de resposta menos o enfileiramento) e os tempos de resposta tendem a seguir uma distribuição Weibull, o que significa que o modo (ou o valor mais comum) está logo acima do mínimo.
Portanto, a redução no quinto percentil diz-me que há uma interrupção repentina na série, e o tempo de serviço diminuiu mesmo que a variação e o tempo médio de resposta tenham aumentado bastante.
Próximos passos
Nesta fase, eu mergulhava fundo nos logs para descobrir o que há de diferente nas amostras de baixo volume às 18:00 em comparação com as amostras de alto volume antes e depois dela.
Eu procuraria:
BTW, o 18:00 "evento" é evidência suficiente para mim que não tem nada a ver com congestionamento / atividade do data center. Para que isso seja verdade, o congestionamento teria que causar uma queda no TPS, o que é possível às 18:00, mas extremamente improvável que esteja causando uma queda sustentada e suavemente curvada no TPS por 10 horas entre 21:00 e 07:00.
fonte