사실 이게 옛날에 엄청 궁금했었는데 옛날에 질문해도 잘 답변해주시는 분이 없더라구요.
물론 상황에 따라 다 틀린거라서 뭐 애매하긴 하지만...
미숙하지만 그간 경험한걸로 계산해보자면..
일단 메모리야 요즘 메모리가 모자란 경우는 없으니 의미없고 CPU가 제일 중요하죠.
접속된 사용자는 대략 평균잡아 30초에 1번 정도 페이지를 요청하는 것 같습니다.
즉 동접이 30명이면 분당 60회, 대략 1초에 1번 정도 페이지 요청이 오는거죠.
이 비율은 사람이 늘어나도 크게 바뀌지 않는 것 같습니다.
어차피 정적파일들은 다 캐쉬가 되기도 하고 페이지별로 매번 새로 로드하게 되는
짤방이라던가 이런게 문제인데 정적 파일들은 php에 비해서 압도적으로 필요로 하는
cpu 사용량이 적어서 대략 1/20 정도 비율이 되는 것 같습니다.
매 페이지마다 새로운 정적파일을 대충 2개씩 로드해야 한다고 치면
그냥 php만 테스트하고 거기에 10% 마진 주면 대충 비슷해지지 않나 싶습니다.
그럼 로드가 좀 높은 페이지를 골라서 ab로 테스트해보고
거기서 나온 tps에다가 27 정도를 곱하면 최대 동접자가 나오는게 아닌가 싶습니다.
다만 요청이 시간적으로 일정하게 올리는 없고 몰리는 구간이 있을테니
그때 버벅이지 않으려면 어느 정도 여유는 있어야 할거고...
그럼 좀 느려지는건 감수하는 수준으로 25정도 곱하면 되지 않을까 싶습니다.
아이비브릿지 2.1GHz 2코어로 제 그누보드가 26.78tps 정도 내주던데
그럼 대략 동접 500 정도까지 견딜 수 있는걸까요?
아 동접 500.. 꿈같은 숫자네요.
서버 부하가 동접수에 비례하지는 않습니다. CPU 점유율 약 50%를 넘어가면 처리 효율이 급격히 떨어져요. 예를 들어 300명이 접속했을 때 CPU 점유율이 50%라면 단순 계산으로는 600명까지 견딜 수 있을 것 같지만, 실제로는 450명쯤만 되어도 100%를 채워버립니다. 이런 현상은 캐싱 기능이 빈약한 그누보드가 좀더 심하지만, XE도 크게 다르지는 않습니다.
물론 이런 상황에서도 많이 느려지기만 하는지, 아니면 에러를 뿜으며 퍼져버리는지는 서버 세팅과 튜닝 상태의 차이입니다. 심지어 서버 자원이 펑펑 남아도는데 아파치, PHP, MySQL이 그걸 쓸 줄을 몰라서 멍하니 있다가 그냥 퍼져버리기도 하지요 ㅎㅎ
메모리가 모자란 경우도 은근히 많아요. 개인 블로그나 단순 정보성 사이트와 달리 커뮤니티는 시간이 지날수록 어마어마한 양의 데이터가 쌓이게 되는데, 이 많은 데이터를 원활하게 처리하기 위해서는 DB의 총 용량보다 더 많은 메모리가 있는 것이 좋습니다. 튜닝 제대로 안 된 개인서버가 쉽게 터지는 원인 1위가 메모리 부족이예요.
아무튼 특별히 무거운 기능을 사용하지 않는다는 가정 하에, 아이비브릿지 2.1GHz 2코어에 그누보드 동접수 500이라면 적당해 보이네요.