programming/jsp

동시접속자수, 서버용량, 로드 밸런싱

labj 2012. 3. 21. 11:35

회선 대역폭 이용한도란 미디어호스팅 고객사이트에서 다운로드 전송되는 동영상 데이터로인해 발생하는 회선트래픽의 양을 의미합니다. 아래 예제는 동시접속자와 예상 대역폭을 계산하였습니다. 즉, 고객님의 홈페이지에서 한개의 동영상을 대상으로 최대 몇명의 동시 접속자가 발생하는지를 예상하여 서비스를 선택하실 수 있습니다.

예)300Kbps로 인코딩된 동영상 파일을 10명이 동시에 예) 감상하는 경우

 

..- 300Kbps × 10명 = 3,000Kbps = 3M bps

..- (bps = bitper second : 초당 전송 바이트수)

 

..- 만일 한개의 사이트에 위와같은 동영상이 10개가

..- 동시에 서비스된다면 전송량은 10배가 됩니다.

 

 

 

 

동시접속자수는 웹서버에 최근 10초 사이에 서비스요청이 있었던 사용자를 접속중인 사용자로 보아 계산한다.

 서비스요청 제한수는 추후에 웹서버의 성능 테스트 결과에 따라 변경할 수 있다.

 

 

 

동시접속자수(천 분의 1초 사이에 동시에 request를 보내는 사용자수) 40명이라는 안정적인 수치를 확보하였다.

시스템의 운영중에 이를 초과하는 접속자수의 급격한 증가로 네트워크 트래픽이 발생하면 이를 위해서는 서버에

연결되어 있는 전용선의 용량을 증대시켜 속도개선을 취해야 한다.

 

 

=====================================================

 (급) 웹서버 구축시 동시 가능 접속자수 예상법

=====================================================

 

웹서버 구축시 (intel Xeon 2.4Ghz, win2000, IIS서버) 서버가 얼마만큼의

동시 가능 접속자를 서비스 할 수 있을까요?

-> 일반적으로 IIS 의 경우 커넥션 수를 대략의 폭만 정하고 있습니다.

그렇기 때문에 CPU 나 RAM 등의 사양에 따라 상이하게 틀려질수 있습니다.

그리고 Xeon cpu 를 사용 하고 계시는데 이xeon cpu 의 경우 하이퍼쓰레드 를

지원 합니다. 그러나 win2k 는 완벽히 지원을 하지 못합니다.

이것이 첫번째 이유 입니다.

 

두번째 이유 입니다.

구성을 계획하고 계시는 사이트 의 DB 커넥션 수라던지 소스의 크기 그리고 가져가는 소스 들의 사이즈 에 따라 성능이 틀려 집니다.

 

세번재 이유 입니다.

사용 하실수 있는 트래픽의 대역폭이 어떻게 되는 건가요?

그 한계를 끌어 들였을때 동시에 값을 계산을 하여야 합니다.

 

apache web server 의 경우는 일반적인 지원 커넥션이 256 이고 컴파일을 하면서 옵션을 주며 1024 이 되는걸 알고 있습니다.

 

그런데 IIS 상에서는 대역폭 설정만 있으며 그 값이 세분화 된것이 아니며

그냥 10만 이하 이상 등의 방법으로 하고 있습니다.

 

 

일반적인 사이트 의 경우 동시 접속은 100을 넘는 경우가 드물며.. 활성화된 동호회 사이트 는 1000정도 그리고 잘나가는 게임 사이트 등 초대형 사이트 들은 1 만 에서 10만 정도로 알고 있습니다.

이 서버들이 부하를 못견디는건 웹서비스 가 아닌 DB 커넥션과 소스 의 입출력이 되는

트래픽 입니다.

 

 

시물레이션 할 수 있는 방법 또는 평균 예상치(벤치마크) 있나요?

-> 답이 되셨을지...

 

======================================================

서버용량

======================================================

 

우선 한게임 싸이트는 일반 웹서비스와 차원이 다릅니다..

각 유저마다 서버가 접속해 있는지 아닌지를 항상 확인하는 데몬(혹은 세션) 이 떠 있어야 하는데..

이것은 즉.. 각 사용자에게 최소한의 패킷 과 메모리가 ( 한 100 bit 쯤 되지 않을까..? ㅡㅡ^ )

할당 되어 있어야 한다는 뜻이죠.. 즉 서버가 엄청난 고사양이어야 한다는 것입니다.

 

그런데 그것도 한계가 있습니다.

라인 용량의 한계요...결국에는 그래서 서버수를 늘리는 거죠...

모르긴 몰라도 한게임 은.. 한 서버당 최대 수용이 800 정도가 아닐까 하는

개인적인 생각을 가지고 있습니다.

 

 

암튼,

님이 말씀하시는 싸이트의 성격이 어떤 서비스를 하려는 곳인지는 잘 모르겠지만,

우선 제 경험 상으로는.. [ 제가 운영하는 곳은 쇼핑몰입니다.]

동시 접속자 수가 편균 3000 입니다.

최대 수용은 4000 정도가 되죠..

 

웹서버 3 대와 관리자서버 1 대 , 파일서버가 1 대, 디비 서버가 1 대죠..

일반적으로 이렇게들 생각하실겁니다..

"아니 그럼 웹서버 한대가 1000 ~ 1400 을 커버 한단 말야..? "

 

가능합니다 충분히....더 할 수도 있습니다.

문제는 위에 말씀드렸던 세션 부분과 메모리 할당은 어떻게 최소화 할 것이냐와

네트워크를 오가는 패킷[데이타] 를 어떻게 최소화 할 것이냐의 문제..

그리고 데이터 베이스와의 통신의 양을 가장 적게 할 수 있는 방법들을 살펴 보면 가능합니다...

 

즉 시스템의 튜닝 뿐 아니라 돌아가는 프로그램의 [ 그것이 웹서비스던, 아니던간에~!!]

튜닝도 같이 이뤄져야 한다는 것을 의미합니다.

 

서버가 100 Mbps 의 라인을 이용하고 있다고 칩시다.

이론적으로 100 Mbps 지만.. 실제로는 네트웍이 30Mbps ~ 35Mbps 면 잘 나오는 겁니다.

그러면 봅시다...

한 서버가 초당 내보낼수 있는 라인의 용량의 한계가 35Mbps 라고 한다면..

동시접속자수가 1000 명이라고 할때..

한명당. 35 Kbps 정도가 한계라는 거죠...

 

또한 아마 저정도면 웹서비스 데몬이 적어도 메모리를 2 Giga 는 되야 할겁니다.

 

결론은 총체적으로 여러가지 부분에서 선행되어야 하는 문제들이 있지만.

그냥 기본적으로 생각할때..

동시 접속자 수가 5000 정도라고 한다면..

 

약 서버 5 대 정도와 디비 1 대 정도라고 말씀드릴수 있겠습니다.

( 그외에 관리서버 , 파일 서버, 백업서버, L4 스위치 등등 머 따지구 들자면 끝없지만..)

 

참고로 저희 사양을 말씀드리면..

웹서버,관리,파일 서버는 2 CPU/2 Giga

디비서버는 4 CPU/8 Giga 입니다..

 

 

답변이 되셨을지 모르겠네요

 

 

======================================================

동시접속자수 부하에 견디는 하드웨어

======================================================

 

안녕하세요. AnyMOS 서버팀 입니다.

저희가 가장 어려워 하는 질문이네요...

일반적으로 저희 Q&A를 살펴 보시면 아시겠지만 어느 특정한

서버를 놓고 '이 서버는 몇명의 동시접속자를 수용 할 수 있습니다.'

라고 하는 것은 옛날 서버가 귀하던 시절의 영업 방식입니다.

그러므로 정확한 답변은 드릴 수 없다가 저희가 드릴 수 있는 답변

이고요. 이 부분은 저희와 이상환님의 검증아래 가장 근접한 데이터를

수집하는 것으로 일을 시작해야 합니다. 일반적으로 포털 사이트인

경우 왭서버의 경우엔 시스탬의 부하량 보다는 네트웍의 부하가 우선시

됩니다. 즉 네트웍 대역폭이 받처 주는 상황에서 서버를 선정 하는 것

이 순서입니다. 기본적인 스팩의 서버로 유저들이 접속 할 경우에 대한

CPU점유률 메모리 사용량 등등을 계산하여 하나의 서버가 처리 할 수

있는 용량을 염두해 두시고 필요한 수량을 선정 해야 합니다.

이전에는 접속자가 많은 대형 포탈 서비스 업체인 경우 엔터프라이즈급

의 서버를 많이 선호 하였으나 요즘은 저가 사양의 서버에 사용자의

수에 따라 유연하게 대처 할 수 있는 로드발란싱 기술을 좀 더 선호

하고 있는 추세 입니다. 오버 사이징으로 인한 비용 낭비를 막고

하나의 서버에 집중화 시켜 부담을 주기 보다는 하드웨어나 소프트웨어

적인 결함을 유연하게 대처 할 수 있는 설계가 환영 받고 있죠.

어느정도 답변이 되셨을지 궁금하네요.

혹시 저희 AnyMOS의 제안에 동의 하셨다면 연락 부탁 드리겠습니다.

저희 AnyMOS에서는 고객사가 보다 정확한 서버를 선정하기 위해 필요

로 하는 장비들을 지원해 드리고 있습니다. 물론 비용은 들지 않습니다.

감사합니다.

 

 

 

 

======================================================

로드 밸런싱을

======================================================

 

       (3) 세션 관리

 

             * 기본적으로 세션 관리 기능 제공

 

             * 세션때문에 관리와 배포가 힘든 경우도 있는데, 대규모 사용자가 있을 경우에는

 

               세션 정보 자체가 오버헤드가 될 수 있고, 로드 밸런싱을 할 때 문제가 발생할 수 있다.

 

               session 객체는 메모리 안에 생성된 객체이기 때문이다. 이 문제는 특정 브라우저를

 

               특정 서버와 통신하도록 로드 밸런싱 서버를 설정함으로써 해결할 수 있기는 하지만,

 

               해당 서버가 다운 되는 등의 경우는 Session Migration을 해주어야 한다.

'programming > jsp' 카테고리의 다른 글

chart  (0) 2012.03.21
HTTP_REFERER  (0) 2012.03.21
chart  (0) 2012.03.21
css만을 이용한 텍스트 효과  (0) 2012.03.21
servlet Post 테스트  (0) 2012.03.20