질문글에 댓글을 달다가 예전에 웹지기님이 올리셨던 글 https://xetown.com/topics/1184640 이 생각나서

제가 관리를 맡고 있는 서버들 중 간단하게 확인할 수 있는 25대의 CPU, RAM 통계를 한번 내보았습니다.

소형 사이트도 있고 국내 커뮤니티 20위권에 들어가는 대형 사이트도 있습니다.

 

CPU (코어수가 아니라 쓰레드수입니다.)

 

2쓰레드: 2  ← 가상서버
4쓰레드: 3  ← 가상서버
6쓰레드: 1  ← 이런 애매한 사양은 클라우드겠죠? ㅎㅎ
8쓰레드: 7  ← 대부분의 짭제온(제온 E3)급 서버호스팅이 여기에 해당됩니다. 가성비 좋아요.
12쓰레드: 1  ← 서버용 CPU가 아니라 i7입니다. 라이젠 출시 후 인텔에서 급하게 코어수 늘린 거... ㅋㅋㅋ
16쓰레드: 4  ← 서버호스팅으로 8c16t 구하기가 은근히 어렵습니다. 얘네들은 그냥 클라우드입니다.
32쓰레드: 2  ← 여기부터 본격 듀얼소켓입니다. 구형 E3, E5가 아닌 제온실버 같은 녀석들도 보이기 시작합니다.
40쓰레드: 3  ← 이건 보안취약점 투성이인 인텔 CPU이지만...
64쓰레드: 2  ← 이 녀석들은 AMD EPYC입니다!

 

RAM

 

4GB: 1  ← 최소한의 사양입니다. 이것보다 낮으면 튜닝/관리의뢰 안 받아요.
8GB: 3  ← 이쯤 되면 웬만한 소형 사이트는 무난하게 돌아갑니다.
12GB: 1  ← 이런 애매한 사양은 클라우드이거나, 트리플채널 RAM을 사용하던 구형 제온일 겁니다.
16GB: 3  ← 이것도 많이 쓰는 사양이지요.
32GB: 4  ← 상당수의 국내 서버호스팅 업체들이 여기가지만 지원합니다.
48GB: 1  ← 제품에 따라서는 여기까지 억지로 높일 수도 있지만...
64GB: 9  ← 여기가 마지노선입니다. 국내에서 일반인이 쉽게 임대할 수 있는 최고 사양!
96GB: 1  ← 여기부터는 해외서버이거나, 커스텀 조립해서 코로케이션하고 있는 경우입니다.
128GB: 1  ← 위의 96GB짜리와 함께 클러스터를 구성하고 있습니다.
192GB: 1  ← 짱 좋습니다.^^

 

 

CPU 사용량은 거의 동접수에 비례합니다. 평균 점유율 30~40% 이하, 피크시간대 점유율 70% 이하를 유지한다면 대체로 쾌적한 서버라고 할 수 있습니다. MRTG 그래프에 찍히는 수치는 5분 단위로 평균을 낸 것이므로, 순간적으로 100%을 찍는 일이 종종 있더라도 그래프에는 70% 정도로 나오기 일쑤입니다. 100%를 찍는 순간 접속한 사용자는 분명 뭔가 버벅거림을 느꼈을 텐데 말이죠. 따라서 그래프로 보는 CPU 점유율에는 항상 여유가 있어야 합니다.

 

RAM은 좀 다릅니다. 사이트 구성에 따라 접속자가 1명밖에 없더라도 기본적으로 먹는 용량이 천차만별입니다. 새로 구입한 스마트폰에 아무 것도 깔지 않아도 기본앱이 잡아먹는 RAM이 꽤 많은 것처럼... 자세히 진단을 해보지 않은 상태에서 확인하는 최소값은 XE 기준으로 아래와 같습니다.

 

A. 4GB

B. 모든 디비 테이블 용량의 합계 (InnoDB 기준입니다. MyISAM이라면 InnoDB 변환시 2~3배 늘어난다고 가정하면 됩니다. 단, 로그인 로그처럼 무한정 쌓이기만 하는 로그 성격의 테이블은 제외합니다.)

C. 현실적으로 예상할 수 있는 최대 동접수를 500으로 나눈 것 (PHP-FPM 프로세스 하나가 대략 100명의 동접자를 처리할 수 있다고 가정하고, memory_limit = 128M, 거기에 opcache와 memcached 등을 감안한 수치입니다.)

 

이라고 했을 때, "A와 B+C 중 많은 쪽"입니다. 물론 단위는 GB이고요.

 

예를 들어 디비 용량이 10GB이고 최대 2000명의 동접수를 예상한다면 C=4이므로 최소 14GB의 RAM이 필요합니다. 권장 용량이 아니라 최소 용량입니다. 이것보다 적으면 성능 저하가 몸으로 느껴집니다. 만약 이런 사이트가 있다면 I/O 캐시와 버퍼 등을 감안하여 실제로는 16~24GB의 RAM을 권해드릴 가능성이 높습니다.

 

아파치/nginx, PHP, MySQL/MariaDB, memcached 외에 추가로 돌리는 프로그램이 있다면 그만큼 RAM을 더 확보해야 합니다. 예를 들어 게시판 검색 속도 향상을 위해 Elasticsearch를 설치한다면 게시물 분량에 따라 최소 8GB에서 최대 32GB까지 RAM이 더 필요합니다. Elasticsearch나 Redis처럼 최근에 개발된 고성능 서버 프로그램들은 처음부터 모든 데이터를 RAM에 저장한다고 가정하고 설계되어 있기 때문에, RAM을 넉넉히 주지 않고 디스크에서 데이터를 불러오라고 하면 효율이 크게 떨어집니다.

 

결론: 서버는 RAM이 많은 게 장땡입니다.^^

 

TAG •

기진곰

profile
GitHub @kijin 사람을 위한 인터넷 생태계의 발전에 많은 관심을 갖고 있습니다.
우리가 만들어 가는 XE의 새 이름, 라이믹스(Rhymix) 프로젝트에 참여하고 있습니다.
오픈소스 도로명주소 검색서버 및 API Postcodify를 개발, 운영중입니다.
국내외 서버 및 클라우드서버 세팅, 이전, 튜닝해 드립니다.
  • profile
    다다익램이라는 말귀가 생각나네요
  • profile
    여기 4,8 고객이요 ㅋ
  • profile profile
    매달 관리비 납부하시는 고객 서버만 통계를 냈으므로 웹지기님 서버는 빠졌습니다. ㅎㅎ
  • ?
    커뮤니티 20위권내 사이트면 동접자가 몇명쯤 나오는건가요?
  • ? profile
    1만 명은 넘지요. 그런데 가볍게 운영하면 서버 사양은 의외로 높지 않아도 됩니다.
  • profile ?
    그럼 소개해주신 서버 사양중에 제일 높은게 20위권내 사이트가 아니라 다른 사이트 운영용 서버인건가요?
  • ? profile
    네, 램 192기가짜리는 좀 특별한 경우입니다. 물론 서버 여러 대를 사용하는 사이트도 있기 때문에 동접수와 개별 서버의 사양이 항상 비례하지는 않지요.
  • profile

    동접자수에 따라 대충 어느정도의 스펙이 필요한지지 알 것 같네요! 감사합니다

  • ?
    ^_^b