Problema de desempenho do kernel Linux e do apache 2.2 em dois servidores da web diferentes

1

Eu tenho um 2 apache com servidores web mod_php por trás de um balanceador de carga, os sistemas operacionais são CentOS 6.x. Eles deveriam ser IDÊNTICOS. Eles devem receber os mesmos pedidos usando round-robin. Um deles estava se saindo muito pior do que o outro.

Eu achei que estava recebendo mais solicitações por algum motivo:

  1. Esse não é o caso.
  2. As solicitações eram sobre os mesmos URLs e sobre a mesma quantidade de solicitações mais ou menos ao mesmo tempo. Ainda assim, o desempenho é pior.
  3. Bem, decidi ajudar o servidor enquanto encontrei uma solução. então eu reconfigurar o balanceador de carga.
  4. Minha alteração na configuração do balanceador de carga foi para enviar as solicitações para o servidor com menos conexões abertas. Depois disso, o servidor começou a receber menos solicitações do que o segundo servidor, e o desempenho ainda era ruim em comparação com o outro. Apenas para enfatizar a diferença, neste ponto as solicitações são distribuídas entre ~ 35 e ~ 65%. Em geral, sobre a mesma proporção de solicitações de URLs.
  5. Agora, pensei que tivéssemos outra diferença de nível de software entre os dois servidores. Esse não foi o caso.
  6. Gerenciamos configurações e códigos automaticamente. O PHP tem os mesmos módulos carregados, o apache também. Nenhuma diferença entre o código.
  7. O hardware
  8. é o mesmo.
  9. Como informações adicionais, NÃO temos sessões de acompanhamento. As solicitações são direcionadas aleatoriamente para os dois servidores. Nós também testamos isso. A diferença agora após a mudança de configuração é que o servidor com o problema recebe muito menos solicitações.
  10. Os servidores não têm nenhuma diferença significativa de tempo nas solicitações de processamento ou na conexão com outros componentes, como o banco de dados.

Dado este background, verifique as imagens atuais da CPU. O servidor com o problema: desempenho da CPU da imagem web1 Observe que RED significa que o tempo da CPU do sistema não é usuário, o apache é o espaço do usuário. Por favor, observe também que essas imagens são de depois que a alteração foi feita para obter menos solicitações para web1 (com o problema). Antes de termos sérios problemas de CPU e carga média Então aqui está o outro servidor. Desempenho da CPU da imagem Web2 . Nenhum problema de E / S, RAM ou outro problema de hardware foi detectado.

Isso me fez suspeitar de problemas no kernel. top parece dizer o mesmo. Início  Desempenho da imagem Web1 vs Web2

Então notei que os kernels têm módulos diferentes carregados por algum motivo.

Como não consigo encontrar outra diferença. Na verdade, tenho o suficiente com essas informações, já que os servidores devem ser o mesmo. BOSS quer que eu seja capaz de vincular isso ao problema real antes de remover os módulos do kernel. Eu tentei algumas coisas, incluíu perf, mas não consegui. Perf ( perf record -F 99 -a -g -- sleep 30 ) está produzindo um resultado como este, mas eu realmente não entendo como usá-lo ou como ele pode me ajudar a definir resultados. web1 à esquerda e web2 à direita. se você ver, lista as chamadas que levam tempo / porcentagem da CPU, mas eu realmente não sei o que elas são.

Você concorda que isso provavelmente deve estar relacionado aos módulos do kernel? Por que sim ou não?

Alguém pode me dar uma idéia sobre como obter estatísticas sobre o uso de módulos e o tempo / porcentagem de uso da CPU por módulo, etc?

Alguma outra coisa em que eu não esteja pensando?

    
por Abel 13.10.2017 / 05:50

0 respostas