본문 바로가기

WEB/Apache

아파치서버 동시접속자수에 따른 메모리 산정 (대략)



Prefork 방식의 아파치 서버일 경우 한명의 client 접속시 일반적으로 5~10MB 정도의 메모리를 사용하게 된다.
 ->  ps aux  명령어 결과에서 RSS 크기를 참조한다. 아래 예시를 보면

# /usr/ucb/ps aux | grep apac
root      8688  0.0  0.1 5280 3936 ?        S   1월 21  0:55 /home/apac
nobody   17125  0.0  0.1 5280 2536 ?        S 14:02:27  0:00 /home/apac
nobody   17126  0.0  0.1 5280 2536 ?        S 14:02:28  0:00 /home/apac
nobody   17127  0.0  0.1 5280 2536 ?        S 14:02:28  0:00 /home/apac
nobody   17128  0.0  0.1 5280 2536 ?        S 14:02:29  0:00 /home/apac
nobody   17129  0.0  0.1 5280 2536 ?        S 14:02:29  0:00 /home/apac
nobody   17130  0.0  0.1 5280 2536 ?        S 14:02:29  0:00 /home/apac
nobody   17131  0.0  0.1 5280 2536 ?        S 14:02:29  0:00 /home/apac
root     20143  0.0  0.1 1776 1424 pts/2    S 17:55:55  0:00 grep apac

메모리가 8GB 이고, 기본적으로 OS에서 1GB 사용, DB 등 다른 S/W에서 1GB 사용하여 6GB가 여분이고, 편의상 client당 10MB 사용한다면
6GB*1024/10MB = 614.4 로 약 600여명이 동시접속 가능하게 된다.

물론, 이는 메모리만 산정할 경우를 계산한 것이다.


네트워크 밴드위스의 경우,
웹서버는 이미지 외에 크게 전송할 콘텐츠가 아니므로 보통 300KB/sec
정도면 훌륭합니다. 그러나 실제로 클라이언트 환경에 좌우되기 때문에
이 속도까지 나오지 않고 보통 10 ~ 300KB/sec 정도입니다.

여기에서는 편의상 작은 50KB/sec 으로 잡는다면
50KB/sec = 50 * 8 KBits/sec = 400Kb/sec 입니다.

10MBPS => 10Mb/sec = 10*1024Kb/sec / 400Kb/sec => 26 Clients