Pendurando solicitações do Apache usando Ubuntu AMI no volume EFS

Pendurando solicitações do Apache usando Ubuntu AMI no volume EFS

Percebi um comportamento estranho na configuração que criei na AWS (região eu-sul-1) para avaliar a migração do nosso provedor atual. Desejo implantar instâncias 1-n EC2 que atendem solicitações da Web por meio do Apache, atendendo arquivos armazenados em um volume EFS comum. Já implementei e testei a parte RDS, o desempenho do PHP, a integração do ElasticCache e assim por diante. Porém, notei um atraso de 5 segundos em solicitações esporádicas, um atraso que me pareceu muito determinístico e muito próximo do valor de 5 segundos. O volume EFS está em modo burst, os créditos são altos (2T) e a porcentagem de uso é muito baixa, então esse não deve ser o problema.

Montei o volume EFS com as opções sugeridas, tanto com o "EFS mount helper" quanto com o "NFS Client", nada mudou. Então, tentei reiniciar do zero, instalando apenas o servidor web Apache padrão (até tentei com Nginx com resultados semelhantes) e montando o volume EFS e benchmarking de outra instância EC2 com o seguinte comando:

siege -c 2 -r 20 -b http://35.152.48.17/efs-mount-point/efs-test/logo.png

Com Ubuntu 18.04 e Ubuntu 20.04, a transação mais longa é sempre superior a 5 segundos (5,12 - 5,42 segundos). Com o AmiLinux, a transação mais longa é rápida o suficiente (0,15 segundos). Curiosamente, se eu diminuir os clientes paralelos de 2 para 1:

siege -c 1 -r 20 -b http://35.152.48.17/efs-mount-point/efs-test/logo.png

a transação mais longa também está ok no Ubuntu, mesmo se eu deixar o "siege" rodar para mais repetições:

siege -c 1 -r 10000 -b http://35.152.48.17/efs-mount-point/efs-test/logo.png

No entanto, se removermos a variável EFS no Ubuntu e servirmos os arquivos do EBS local, a transação mais longa será extremamente rápida (alguns milissegundos), então o problema surge apenas no EFS com Ubuntu (18.04 e 20.04). Talvez as opções de montagem sugeridas funcionem para o AmiLinux, mas falte algo para as AMIs do Ubuntu?

As etapas de reprodução são tão fáceis que me parece tão estranho:

  1. escolha a AMI do Ubuntu 18.04;
  2. monte o volume EFS (com o "EFS mount helper" ou com o cliente NFS);
  3. instale o Apache atualizando apenas o diretório de serviço.

Alguma sugestão?

Responder1

Finalmente encontrei a solução.

O problema acontece apenas nos kernels "5.4.0-1029-aws" e "5.4.0-1032-aws". O problema parece resolvido nas versões do kernel "5.4.0-1034-aws" e "5.4.0-1035-aws".

Então, você só precisa atualizar o kernel:

sudo apt-get-update
sudo apt-get install linux-image-5.4.0-1035-aws

Então, após a reinicialização, você deverá ter o novo kernel instalado. Verifique com o seguinte comando:

uname -r

Você deverá ver este resultado:

5.4.0-1035-aws

Então você não deverá mais ter latência.

informação relacionada