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:
- escolha a AMI do Ubuntu 18.04;
- monte o volume EFS (com o "EFS mount helper" ou com o cliente NFS);
- 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.