como aumentar a velocidade do apache para arquivos estáticos do servidor - muitos “R” em mod_status

3

Eu tenho um apache como proxy para backend servidor JBoss, eu uso mod_proxy_loadbalancer. Eu também tenho alguns arquivos estáticos e recursos que eu coloquei em um diretório "upload" que configurado como um diretório no httpd.conf apache.Eu também habilitei mod_mem_cache, como eu tenho enought memória nesse servidor.O servidor é um HP DL360 4 núcleos / 8G RAM / com placa RAID e disco SAS de 15K.

Meu problema é que muitos relatórios de clientes abrem arquivos estáticos são muito lentos. Quando eu rastrear usando o FireBug, vejo algum tempo abrir arquivos estáticos (html / swf < 50kb) precisam de cerca de 5-7s. Tanto a largura de banda do servidor quanto a largura de banda do meu escritório são suficientes. E quando monitoro o lado do servidor, a carga média no apache é de cerca de 20 solicitações / seg.

Eu abri o mod_status no lado do apache, eu posso encontrar muitas solicitações em status "R", o que significa ler solicitações.

O que significa leitura de status? Isso afeta a velocidade do tempo de resposta do servidor? Como podemos reduzir as solicitações de status "R" na configuração do apache.

Obrigado

    
por hntangwei 03.11.2011 / 11:10

1 resposta

3

Algumas coisas que você pode verificar:

  • O status "Leitura" significa simplesmente que o Apache está lendo a solicitação do cliente remoto. No FireBug, ou em uma ferramenta semelhante, você pode ver os cabeçalhos "request" enviados. Estes são geralmente muito pequenos e não devem demorar muito para serem processados. Um monte de slots Apache parando no estado "read" indica algum tipo de problema em algum lugar.
  • Use um comparativo de mercado como o ApacheBench ( ab ) para testar a velocidade dos arquivos estáticos. Se você executá-lo no servidor, você deve obter uma taxa de solicitação muito alta (ex: 10-20k / seg), a menos que algo esteja errado. Você também pode executá-lo remotamente para ver as velocidades de diferença devido à distância e velocidade da rede.
  • Tem certeza que a velocidade da rede do cliente ou servidor não é um problema? O teste de benchmark deve ser capaz de confirmar isso e dar a você uma velocidade superior para isso. Por exemplo, se o seu servidor estiver apenas em uma conexão de 10 Mbps, ele poderá fornecer apenas cerca de 25 arquivos / segundo se eles tiverem 50 kb de tamanho.
  • Verifique o status do servidor do Apache e os top e iostat de seu servidor para verificar sinais óbvios de uso excessivo na CPU, memória ou IO. Certifique-se de que o MaxClients do Apache não esteja definido como muito alto ou muito baixo (ambos são ruins por diferentes motivos).
  • Considere usar um servidor da Web alternativo para arquivos estáticos, como lighttpd ou nginx. Dependendo de como você tem a configuração do Apache, você pode economizar uma boa quantidade de memória / CPU, permitindo que o Apache sirva os arquivos dinâmicos e algo mais que os arquivos estáticos. Por exemplo, nos meus servidores, o lighttpd pode servir arquivos estáticos de até 20-30k / s com apenas 50 MB de RAM, enquanto o Apache pode "fazer" apenas 10-20k / s com 500 MB (o uso de memória é a maior vantagem).
  • Verifique os logs do Apache, do sistema e do aplicativo em busca de mensagens de erro relevantes.
  • Outra coisa a verificar é o número de solicitações recebidas no Apache. Se você obtiver um pico repentino nas solicitações recebidas, poderá obter um grande número de "Leituras", pois o servidor tentará lidar com todas elas. Isso pode ser um pico normal ou pode ser uma forma de DoS (acidental ou mal-intencionada). Se você ver muitas conexões múltiplas do mesmo IP no status do servidor, ou via netstat , pode ser uma causa possível.
por 03.11.2011 / 17:55