현재 공급자로부터의 마이그레이션을 평가하기 위해 AWS(eu-south-1 지역)에서 생성한 설정에서 이상한 동작을 발견했습니다. Apache를 통해 웹 요청을 처리하고 공통 EFS 볼륨에 저장된 파일을 처리하는 1-n EC2 인스턴스를 배포하고 싶습니다. 저는 이미 RDS 부분, PHP 성능, ElasticCache 통합 등을 구현하고 테스트했습니다. 그러나 산발적인 요청에서는 5초 지연이 발생하는 것을 발견했습니다. 이 지연은 매우 결정적이며 5초 값에 너무 가깝습니다. EFS 볼륨은 버스트 모드이고 크레딧은 높으며(2T) 사용률은 매우 낮으므로 문제가 되지 않습니다.
"EFS 마운트 헬퍼"와 "NFS 클라이언트"를 모두 사용하여 제안된 옵션을 사용하여 EFS 볼륨을 마운트했지만 아무것도 변경되지 않았습니다. 그래서 처음부터 다시 시작하여 기본 Apache 웹 서버만 설치하고(Nginx에서도 비슷한 결과를 얻었습니다) EFS 볼륨을 마운트하고 다음 명령을 사용하여 다른 EC2 인스턴스에서 벤치마킹을 시도했습니다.
siege -c 2 -r 20 -b http://35.152.48.17/efs-mount-point/efs-test/logo.png
Ubuntu 18.04 및 Ubuntu 20.04에서 가장 긴 트랜잭션은 항상 5초(5.12 - 5.42초)를 초과합니다. 대신 AmiLinux를 사용하면 가장 긴 트랜잭션도 충분히 빠릅니다(0.15초). 흥미롭게도 병렬 클라이언트를 2에서 1로 낮추면 다음과 같습니다.
siege -c 1 -r 20 -b http://35.152.48.17/efs-mount-point/efs-test/logo.png
더 많은 반복을 위해 "포위 공격"을 실행하더라도 Ubuntu에서도 가장 긴 트랜잭션은 괜찮습니다.
siege -c 1 -r 10000 -b http://35.152.48.17/efs-mount-point/efs-test/logo.png
그러나 Ubuntu에서 EFS 변수를 제거하고 로컬 EBS에서 파일을 제공하는 경우 가장 긴 트랜잭션이 엄청나게 빠르므로(몇 밀리초) Ubuntu가 있는 EFS(18.04 및 20.04 모두)에서만 문제가 발생합니다. 제안된 장착 옵션이 AmiLinux에는 작동하지만 Ubuntu AMI에는 뭔가가 부족할 수 있습니까?
재현 단계는 너무 쉬워서 이상하게 느껴집니다.
- Ubuntu 18.04 AMI를 선택합니다.
- EFS 볼륨을 마운트합니다("EFS 마운트 헬퍼" 또는 NFS 클라이언트를 사용하여).
- 제공 디렉토리만 업데이트하는 Apache를 설치하십시오.
어떠한 제안?
답변1
마침내 해결책을 찾았습니다.
이 문제는 커널 "5.4.0-1029-aws" 및 "5.4.0-1032-aws"에서만 발생합니다. 이 문제는 "5.4.0-1034-aws" 및 "5.4.0-1035-aws" 커널 버전에서 해결된 것 같습니다.
따라서 커널만 업그레이드하면 됩니다.
sudo apt-get-update
sudo apt-get install linux-image-5.4.0-1035-aws
그런 다음 재부팅한 후 새 커널을 설치해야 합니다. 다음 명령으로 확인하십시오.
uname -r
다음 결과가 표시됩니다.
5.4.0-1035-aws
그러면 더 이상 대기 시간이 없어야 합니다.