프갤에 자주 올라오는 질문 중 하나
프리티어 서버에 웹사이트 올리면서 동접 얼마까지 가능한가 묻기
그건 어떤 서비스를 하는지? 서버에서 어떤 작업을 하는지에 따라 너무 큰 차이가 나기에
네가 모르면 아무도 모른다가 정답이지만
그래도 대충이라도 알고 싶은 심정일테니 알아보자
위에 스샷은 이 사이트에서 찍은 건데
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 연동해서 컴퓨팅 줄이면 그 이상?
이런 식으로 운영하면서 계산해봐야 정확히 나오고 아무도 정확하게 예측 불가능함
그러니까 정확한 수치 원하면 묻지말고 직접 돌려봐야함
새벽에 이런 정보글을 보다니
어차피 한서버에 디비고 뭐고 다 올릴 테니까 그거 감안하면 좀 남기는게 좋다. 디비 IO는 존나 불규칙적으로 발생하는지라 트래픽 몰리면 io 모자라고 코어 모자라면 좆됨
누가 한 서버에 디비고 뭐고 다 올림? 테스트 서버도 아니고 프로덕트에서 웹서버+디비서버를 누가 한서버에 같이 돌림?
프리티어 얘기 했잖아..
근데 그거 제외하고..메모리디비랑 ap 한곳에 올리는곳도 존나 많음 ㅋㅋ...
프리티어가 코어 모자르고 말고가 어디있어 vCPU 1/8개 이러는데
그리고 프리티어는 어디까지나 클라우드 테스트지 사실 운영하긴 뭘 운영해. 그냥 혼자 테스트나 하는거지
그냥 개인이 만들어서 대충 올리는거 생각하고 말한거임. 실제 일할때 저렇게 구성하면 안되지 당연 근데 생각해보니 개인이 하는거에 동접 2만씩 찍히긴 힘들겠네
내가 테스트한 저 서버는 월 15만원인가 내는 스펙으로 열어서 테스트한 거임. 프리티어 아님.
프리티어도 rds 디비 인스턴스 제공한다 게이야 ..
t2.micro + rds t2.micro 이 정도면 동접 50명? 본문에 떡하니 적혀있구만 뭔 뜬금포냐?
그리고 rds t2.micro로 뭘 하려고 하지마라. 포트폴리오 만들고 그거 시연해서 보여주는 용도 정도라면 모를까... CPU크레딧 바로 소진되고 기준성능 10% vCPU1개로 뭔 SQL을 돌려...
개추 ㄷ.ㄷㄷ - dc App
멋진 글이다
수준이 전문가입니다 ㅇㅅㅇ
먼지모르겠찌만 추천
오
형님 ER다이어그램에서 약한개체가 N : M의 관계를 가질 수 있나요?
테이블 만드는데 에러뜹니다
이거 근데 서버 아키텍처 복잡해지고 수요예측이 정확하게 안되거나 계속 성장하는 회사면 너무 빡샘 그래서 그냥 인프라 구성 수평확장 용이하게 구성하고 지표 모니터링 환경 구축해서 지속적으로 대응하는 게 실무긴 하지
처음 구성할땐 미니멀하게 구성하고 부하테스트만 좀 해보고 ㅇㅇ