프갤에 자주 올라오는 질문 중 하나


프리티어 서버에 웹사이트 올리면서 동접 얼마까지 가능한가 묻기


그건 어떤 서비스를 하는지? 서버에서 어떤 작업을 하는지에 따라 너무 큰 차이가 나기에


네가 모르면 아무도 모른다가 정답이지만


그래도 대충이라도 알고 싶은 심정일테니 알아보자


위에 스샷은 이 사이트에서 찍은 건데


https://docs.microsoft.com/ko-kr/mem/configmgr/core/plan-design/configs/site-size-performance-guidelines#performance-test-methodology


일반적인 크기 조정 지침이라고 대충 서버 스펙에 따라 동접 몇명 정도가 적당한지 일.반.적.인. 표를 만들어서 안내하고 있음


DB서버에서 동접 2만5천명을 처리하는데 


권장하는 코어는 4개, 메모리는 16G, IOPS는 1700


코어 = vCPU 1개라고 보면 되고 


메모리는 코어 1개당 4G씩 곱하면 되네


IOPS는 I/O per second 초당 입출력 유닛수


디스크가 속도가 빨라도 IOPS 수치가 낮으면 


큰 파일을 몇 개 옮길 땐 성능 체감을 못하겠지만, 


작은 파일(데이터)를 수 백, 수 천개씩 작업할 때는 병목현상 생김


디스크 속도와 IOPS 모두 내 용도에 맞게 적절하게 준비해야함


내 디스크의 속도와 IOPS 테스트하는 툴을 다운로드 받아서 서버에서 테스트하면 됨


https://github.com/microsoft/diskspd


https://github.com/Microsoft/diskspd/wiki/Command-line-and-parameters


DiskSpd.exe -r -w100 -t8 -o8 -b64K -c100G -d60 -h -L G:\\test\testfile.dat


파라미터들은 대소문자 구분하니 깃헙 위키 설명서 읽어보면 되고 대충...


-w100 이건 쓰기 비율 100%


-t8 -o8 이건 쓰레드 개수 (보통 자신의 vCPU 수량과 맞춰서 테스트하면 적당함)


-b64K 이건 쓰기 블록 단위 64킬로바이트이니 자신의 디스크 기본 IO 크기에 맞추거나, SQL에 입출력하는 데이터들의 예상크기 등을 적으면 됨


-c100G 이건 testfile.dat 더미파일 크기이니 30G 등으로 알아서 조정


-d60 이건 테스트할 시간 초단위 


이걸 테스트하면 이런 결과가 나옴




AWS에 EC2 서버 대충 하나 열어서 테스트


proc vCPU는 2개, 메모리 8GB, 디스크는 gp3 ssd로 세팅해서 테스트


AWS에서 gp3 SSD를 쓰면 기본 성능으로 125MB/s, 3000 IOPS를 제공한다고 하고 추가성능은 추가 요금을 내고 설정 가능


블록단위 16KB로 테스트를 하면


디스크 속도 46.87MB/s

IOPS 2999.97


디스크 속도는 최대 속도 125MB/s짜리 서버이지만 블록단위가 16KB X 3000 = 48MB/s이니까 저 속도면 최대치로 나온 게 맞음

IOPS는 기본 성능 최대치로 잘 나옴




이번에는 블록 단위를 32KB로 테스트


모두 16KB와 테스트 결과가 같은데


디스크 속도가 93.75MB/s로 아까보다 2배 늘어남


블록 단위를 16KB에서 32KB로 늘려서 테스트했으니 최대 속도로 나오고 있음




이번에는 블록 단위를 또 2배 더 늘려서 64KB로 테스트


64K X 3000 = 192MB/s


테스트하고 있는 서버의 디스크 최대 성능은 125MB/s, IOPS 3000 인데


64K블록 단위로 테스트하니까


최대 속도 125MB/s에서 제한 걸려서 최대치인 125.20MB/s에 도달했고


이 속도와 블록 크기에 비례하게 최대 사용 중인 IOPS는 2,000 으로 1,000 만큼이 잉여량됨


이런 경우는 디스크의 최대 속도를 192MB/s까지 업그레이드하면 최대 IOPS와 밸런스 맞출 수 있음




마지막으로 블록 단위를 128KB로 테스트하면


IOPS가 아까보다 절반인 1,000으로 떨어져있음


이러면 IOPS가 2,000 남아도니까 디스크 속도를 384MB/s까지 끌어올려야함


참고로 gp2 ssd는 디스크 용량 1GB당 3 IOPS를 주니까 100GB 사용하면 그 볼륨은 300 IOPS 가 최소 기준 성능이 됨


그러니 gp2쓸 필요 없고 gp3 쓰면 더 싸고 빠름


디스크 용량 상관없이 무조건 125MB/s, 3,000 IOPS 가 최소 기준 성능이고 확장 가능함



프로비저닝 SSD인 io2는 예측 가능한 트래픽 정보가 있을 때만 쓰면 되고


그냥 모르겠으면 프로비저닝 SSD인 gp3 쓰면 됨


이렇게 계산해서 대충 내 서버 스펙이면 몇명쯤 소화되겠다 계산해보면 됨


대충 계산해보면 vCPU1개의 10%인가 사용하는 프리티어인 


t2.micro + rds t2.micro 이 정도면 동접 50명? 그냥 정적 페이지 몇개 보여주는 거면서 이미지 파일은 S3 연동해서 컴퓨팅 줄이면 그 이상?


이런 식으로 운영하면서 계산해봐야 정확히 나오고 아무도 정확하게 예측 불가능함


그러니까 정확한 수치 원하면 묻지말고 직접 돌려봐야함