AWS EFS의 성능 저하
우리는 aws ec2에서 자동스케일링과 EFS로 워드프레스 사이트를 호스팅했다.그런데 갑자기 '허용'이처리량은 0바이트에 가까워졌고 BurstCreditBalance는 날이 갈수록 줄어들고 있습니다(2TB에서 소수의 Mbs!).EFS 크기는 약 2GB에 불과했습니다!우리는 이 문제에 두 번째로 직면해 있다.이 상황에 대해 비슷한 경험이나 제안이 있는 사람이 있는지 알고 싶습니다.출근일에 EFS에서 NFS 또는 glusterf로 이동할 계획
Amazon EFS의 처리량은 파일 시스템의 성장에 따라 확장됩니다.
...
파일 시스템의 버스트 기능(시간 길이와 버스트 속도 모두)은 파일 시스템의 크기와 직접 관련이 있습니다.대용량 파일 시스템은 더 오랜 시간 동안 더 큰 속도로 버스트할 수 있습니다.따라서 응용 프로그램에서 더 많은 버스트를 필요로 하는 경우(즉, 파일 시스템의 버스트 크레딧이 부족하다는 것을 알게 되면) 파일 시스템의 크기를 늘려야 합니다.
메모
Amazon EFS에는 프로비저닝 기능이 없으므로 파일 시스템을 더 크게 만들려면 더 많은 데이터를 추가해야 합니다.
파일 시스템에 저장되는 데이터는 2GiB뿐이라고 말씀하셨습니다.그게 문제입니다. 언뜻 보기에는 직관에 어긋나지만 EFS는 규모가 커질수록 속도가 빨라집니다.그 반대도 마찬가지입니다.소형 파일 시스템은 저장된 데이터의 GiB당 초당 50KiB의 속도로만 버스트 크레딧을 축적합니다.
따라서 2 GiB 파일 시스템의 경우 매일 매우 적은 양의 데이터를 전송함으로써 크레딧이 고갈됩니다.
60 sec/minute ×
60 min/hour ×
24 hr/day ×
0.05 MiB/s per GiB stored ×
2 GiB stored = 8,640 MiB/day
따라서 이 파일 시스템이 유지할 수 있는 데이터 전송은 하루에 약 8.6 GiB입니다.
한 달에 0.60달러만 내면 된다는 것을 기억하기 전까지는 이상해보인다.
데이터를 더 저장하는 것만으로 성능을 선형적으로 향상시킬 수 있습니다.계산에 사용되는 파일시스템 사이즈는 1시간에 1회 갱신되기 때문에 이 루트를 사용하면 몇 시간 이내에 업틱이 표시됩니다.
지금까지 잘 작동한 이유는 새로운 파일 시스템마다 2.1TiB에 해당하는 초기 신용 잔액이 제공되기 때문입니다.이는 주로 데이터를 처음 로드할 때 파일 시스템을 빠르게 하기 위한 것이지만, 설명한 것처럼 전체 스토리지 환경이 낮으면 며칠 또는 몇 주 정도 지속되며, 갑자기 시스템이 올바른 기준 동작으로 안정되는 것을 볼 수 있습니다.
기본적으로 상호 연결된 두 가지 매개 변수(총 스토리지 용량과 기준 스루풋)의 설정에 대한 비용을 지불해야 합니다. 둘 다 구성 대상이 아닙니다.저장 공간을 늘리려면 파일을 더 저장하기만 하면 됩니다.더 많은 처리량을 원한다면...더 많은 파일을 저장합니다.
여기 파티에는 좀 늦었네요.
TL;DR
집계 기준 처리량을 늘리려면 더미 데이터를 생성하여 파일 시스템의 크기를 늘립니다.이것에 의해, 파일 시스템의 베이스 라인과 버스트 퍼포먼스가 향상됩니다.
다음 두 가지 고려사항이 있습니다.
- GB당 비용은 지역에 따라 다르지만 가격은 GB당 0.30~0.36달러(2018년 기준)입니다.
- 파일 시스템 크기가 증가하면 버스트 애그리게이트 스루풋, 최대 버스트 기간, 시간 파일 시스템의 비율(일당) 등 다른 메트릭도 증가할 수 있습니다.의견: 256GB 이상의 파일 시스템을 원합니다.
퍼포먼스 지표:
- 베이스라인 집약 스루풋
- 버스트 집약 스루풋
- 최대 버스트 지속 시간
- 파일 시스템이 버스트할 수 있는 시간 비율(1일당)
각 메트릭에 대한 증가 작동 방식에 대한 자세한 내용은 성능 설명서를 참조하십시오.
Windows 이외의 서버에서는 다음 스크립트를 사용하여 더미 데이터를 생성하여 파일시스템 크기를 늘릴 수 있습니다.
#!/bin/bash
COUNTER=0
while [ $COUNTER -lt $1 ]; do
# Use DD to generate 1MB of data 1024 times from /dev/zero and add the newly created file to $2/N.txt
dd if=/dev/zero of=$2/$COUNTER.txt bs=1048576 count=1024
echo "Added file ${COUNTER}.txt to ${2}/"
((COUNTER++))
done
# Save this file as create.sh
# Be sure to run: sudo chmod +x create.sh
EFS 파일 시스템이 마운트된 EC2 인스턴스에서 이 스크립트를 실행하려면 네트워크 성능이 뛰어난 EC2 인스턴스를 사용하는 것이 좋습니다.이것에 의해, 시간이 촉박한 유저의 파일 생성에 필요한 시간을 단축할 수 있습니다.
create를 사용하여 스크립트를 호출합니다.sh 256 "/mnt/syslog-directory/syslog"
메모: 위의 명령어를 실행하면 1GB당 256개의 파일이 생성됩니다.더 적은 양의 데이터를 원하는 경우 원하는 파일 시스템 크기로 256을 변경하기만 하면 됩니다.
그 밖에 할 수 있는 것은 다음과 같습니다.
- Elastic Beanstalk를 사용하는 경우 로드 밸런서의 CloudFront Distribution을 생성합니다.
- WordPress에서 불필요한 플러그인 제거
- Apache 또는 Nginx용 캐싱(OPCache) 설치
연결을 선택하면 CloudWatch 내에 EFS에 사용할 수 있는 대시보드가 있습니다.파일 시스템의 성능을 이해하는 데 필요한 모든 메트릭이 포함되어 있습니다.
언급URL : https://stackoverflow.com/questions/41673284/degrading-performance-of-aws-efs
'source' 카테고리의 다른 글
AngularJS $watch vs $watch Collection: 어떤 것이 퍼포먼스에 더 좋습니까? (0) | 2023.03.28 |
---|---|
공통 라이브러리를 만드는 스프링 부트 사용 방법 (0) | 2023.03.28 |
mongoDb에서 인덱스로 어레이 요소를 삭제하려면 어떻게 해야 합니까? (0) | 2023.03.28 |
Android에서 React Native가 빌드 도구를 찾지 못했습니다. (0) | 2023.03.28 |
ReactJS에서 객체를 매핑하려면 어떻게 해야 합니까? (0) | 2023.03.28 |