Leitura de desempenho do Apache 2 do servidor de arquivos NFS no EC2

2

Estou tentando configurar um ambiente com ELB e 4 EC2 m1.large executando a leitura do Apache 2 a partir de outro servidor N2 v3 do EC2 m1.small.

Estou usando o Apache Benchmark para medir o desempenho em solicitações por segundo, com o seguinte comando:

ab -k -n100 -c1 http://localhost/index.html

Estou montando o compartilhamento NFS com -o noatime, _netdev

As instâncias estão no N.California.

west-1a tem 2 servidores da web e o servidor NFS. west-1c tem 2 servidores da web.

Sempre que eu executo o arquivo do volume EBS local, obtenho resultados consistentes, mas quando o executo lendo do compartilhamento NFS, os resultados variam mais de 100% quando executo o teste sequencialmente:

for i in $(seq 100); do ab -k -n 100 -c 1 http://localhost/index.html | grep -i "requests per second" ; done

Exemplo de saída:

Requests per second: 0.36 [#/sec] (mean)
Requests per second: 2.39 [#/sec] (mean)
Requests per second: 117.12 [#/sec] (mean)
Requests per second: 128.13 [#/sec] (mean)
Requests per second: 349.67 [#/sec] (mean)
Requests per second: 161.31 [#/sec] (mean)
Requests per second: 87.54 [#/sec] (mean)
Requests per second: 132.84 [#/sec] (mean)
Requests per second: 226.37 [#/sec] (mean)
Requests per second: 258.42 [#/sec] (mean)
Requests per second: 258.02 [#/sec] (mean)
Requests per second: 272.02 [#/sec] (mean)
Requests per second: 211.56 [#/sec] (mean)
Requests per second: 180.66 [#/sec] (mean)
Requests per second: 209.89 [#/sec] (mean)
Requests per second: 0.37 [#/sec] (mean)
Requests per second: 20.62 [#/sec] (mean)
Requests per second: 38.24 [#/sec] (mean)
Requests per second: 37.95 [#/sec] (mean)
Requests per second: 91.70 [#/sec] (mean)
Requests per second: 119.31 [#/sec] (mean)
Requests per second: 112.17 [#/sec] (mean)
Requests per second: 118.26 [#/sec] (mean)
Requests per second: 119.06 [#/sec] (mean)
Requests per second: 69.67 [#/sec] (mean)
Requests per second: 117.91 [#/sec] (mean)
Requests per second: 118.93 [#/sec] (mean)
Requests per second: 119.10 [#/sec] (mean)
Requests per second: 120.92 [#/sec] (mean)
Requests per second: 121.33 [#/sec] (mean)
Requests per second: 1.42 [#/sec] (mean)
Requests per second: 106.74 [#/sec] (mean)
Requests per second: 401.16 [#/sec] (mean)
Requests per second: 404.73 [#/sec] (mean)
Requests per second: 406.82 [#/sec] (mean)
Requests per second: 417.38 [#/sec] (mean)
Requests per second: 412.92 [#/sec] (mean)
Requests per second: 420.86 [#/sec] (mean)
Requests per second: 419.59 [#/sec] (mean)
Requests per second: 415.37 [#/sec] (mean)
Requests per second: 388.77 [#/sec] (mean)
Requests per second: 413.89 [#/sec] (mean)
Requests per second: 409.92 [#/sec] (mean)
Requests per second: 416.84 [#/sec] (mean)
Requests per second: 11.53 [#/sec] (mean)
Requests per second: 38.46 [#/sec] (mean)
Requests per second: 70.85 [#/sec] (mean)
Requests per second: 71.28 [#/sec] (mean)
Requests per second: 60.33 [#/sec] (mean)
Requests per second: 55.83 [#/sec] (mean)
Requests per second: 41.74 [#/sec] (mean)
Requests per second: 46.33 [#/sec] (mean)
Requests per second: 75.05 [#/sec] (mean)
Requests per second: 95.06 [#/sec] (mean)
Requests per second: 96.73 [#/sec] (mean)
Requests per second: 97.15 [#/sec] (mean)
Requests per second: 96.70 [#/sec] (mean)
Requests per second: 57.88 [#/sec] (mean)

Minha pergunta é: isso poderia estar relacionado à rede da AWS e há algum ajuste que possa ser feito para obter resultados mais consistentes? Brinquei movendo o servidor NFS para o outro AZ, e isso não alterou o fator de inconsistência.

PS: Isso está acontecendo em todos os servidores da Web.

    
por Paulo Arruda 20.07.2013 / 07:09

1 resposta

1

Portanto, há muitas partes móveis para analisar em relação ao armazenamento de rede na Amazon. Então, vamos ter que dividir essa questão em algumas partes. Você pode querer olhar para iSCSI como uma alternativa ao NFS porque ele é conhecido por ter seus problemas com coisas assim, mas eu irei faço o meu melhor para ajudar.

Então, a primeira coisa é se você está usando um elb para essa instância do servidor NFS, então já é um armazenamento de rede. Eu direi novamente de outra forma o seu armazenamento de rede tem armazenamento em rede. Para tornar as coisas mais complicadas, cada AWS divide a rede (e o tráfego de ebs desde sua rede) com base no tamanho da instância. Assim, com um M1 pequeno, você obtém uma quantidade muito pequena de desempenho de rede, como "LOW "

Agora, a próxima coisa que você também tem que acompanhar é o cache em cada uma das suas máquinas M1.large. Como não é um disco local, o servidor não está ciente se o arquivo na unidade não armazenará em cache o arquivo na memória na máquina local para que cada solicitação da Web seja enviada para o m1.small e obtenha os dados que levam tempo. para habilitar o cache , mas sua milhagem pode variar com o código implanta.

A última coisa que eu recomendo que você olhe é verificar suas configurações do Apache e ver se você pode torná-lo melhor, " 25 Dicas de Ajuste de Desempenho do Apache ", e talvez jogando com MPM worker e MPM prefork

P.S No momento em que o seu m1.small possui 1.7gb de memória, fique de olho que ele tentará armazenar em cache os itens da memória que estão vindo do disco. Não sei ao certo o tamanho do seu site, mas algo a ser lembrado.

Vou adivinhar que o motivo pelo qual você definiu "-c" para 1 foi porque você o executou em um servidor dual core, tente executá-lo em outra máquina e tente defini-lo como 10 ou um número maior, se não funciona coloque tudo sob um ELB e então pegue outra máquina e abra muitos tópicos, há um período de aquecimento no elb apenas um heads up

    
por 20.07.2013 / 11:13