mod_throttle
우아..이놈때문에 고생을 하두 많이해서..ㅠㅠ 이놈은 접속자가 많은 사이트에서는 쥐약이다. 프로세스 수가 이유없이 증가한다. 무슨 이유인지는 모른다. 여튼 접속자가 많은곳에서는 사용 금지!! 이놈은 사용량을 제한 하는 것 보다는, 어느정도 사용하는지 확인 하는 정도로 사용할 것이다.
1. 가상 호스트 별 접속량 제한 (mod_throttle) 1.3.X 에만 사용가능 (1) 개념 가상 호스트별로 접속량을 기록하여, 일정량 이상이 되면, 접속 못하게 하는 모듈인데... 정확한 개념은 모르겠당.^^;
(2) 설치 - 먼저 모듈을 구한다. 어디서 ?? 개발자 사이트에서
http://snert.com/Software/mod_throttle/index.shtml
- 근데... 멀리갈필요 있남^^; 받아 두었는걸.~ http://ftp.superuser.co.kr/pub/etc/mod_throttle312.tgz
- 설치 tar xvfz mod_throttle312.tgz rm -rf mod_throttle312.tgz cd mod_throttle-3.1.2
(DSO 모드로 설치한다, 문제 생기면 제거 하기 쉬우니까~) /usr/local/apache/bin/apxs -i -a -c mod_throttle.c ## 옵션 설명. -i : 라이브러리 디렉토리에 so 파일 복사하라는 옵션 -a : httpd.conf 파일에 LoadModule 설정을 하라는 옵션 -c : 컴파일 하라는 옵션
(3) 설정 - httpd.conf 파일을 열어서 다음과 같이 설정한다.
## 사용자별 트래픽 모니터링 하기 위한 모듈을 로드한다. (접속자 많을때는 하지말것) LoadModule throttle_module libexec/mod_throttle.so #예) 전체 설정을 1일 300G 로 한다면, 아래와같다. #ThrottlePolicy Volume 300G 1d // 1일 300 M 로 제한
# 전체적인 상황을 보는 페이지 Order deny,allow Deny from all ## 특정 ip만 열어준다. Allow from 피씨아이피 SetHandler throttle-status
## 사용자 자신의 접속량 점검 SetHandler throttle-me SetHandler throttle-me ## 통계결과를 3초에 한번씩 갱신하여 보여준다.((기본은 60) ThrottleRefresh 10 ## 접속하는 ip들을 1000개 까지 보여주면 통계를 구하기 위해 제한을 두지 않았다. ThrottleClientIP 1000 none ## 아이피/~doly 으로 접속을 10초에 10번으로 제한하였다. ThrottleUser doly Request 10 10 ## 정책들 None : 아무 정책이 없고, 단지 모니터링 용도로 사용할때 사용 Concurrent : 동시접속수를 제한하기위한 것인데.. 별루당 (ThrottleClientIP, ThrottleRemoteUser와 같이 쓸수 없다.) Document 요청제한수 기간 : Request와 비슷 단, html 형식의 문서만 카운트 한다.(그림파일 제외) Idle 쉬는시간 기간 : 요청간에 쉬는 시간을 준다?? 왜??? <-- 이건 더 이해 해야 함. Random 받아들이퍼센트 기간: 0이면 모두 거절, 100 이면 모두 허가, 중간갑이면 랜덤하게 허가^^; Request 요청제한수 기간: 기간동안 받아들일 요청수 ^^; Speed 제한용량 기간 : Volume 하고 비슷하지만, 요청을 거절하지 않고 연기(delay)시킨다. Volume 제한용량 기간 : 기간동안 제한용량만큼을 준다.
## 항목들 SetHandler throttle-status : throttle의 상태를 보여준다.(관리자 모드) Context : server,,,
SetHandler throttle-me : throttle의 자기 상태를 보여준다.(사용자 모드) Context : server,,,
** ClinetIP별로 제한을 하기 위함((괜찮은 설정)) ThrottleClientIP 보여줄ip수 정책 제한 기간 Context : server 보여줄ip는 : 접속한 ip리스트 들이다. 정책 : 위 정책들중의 하나를 선택하면 된다.^^ 제한,기간 위 정책에 따른다.
** 통계를 출력할 형태.(별의미 없다.) ThrottleContentType 문자열 Context : server 문자열 : text/html, text/plain 이 둘중에 하나 넣으면 된다.
** 결과에 색을 달리할 퍼센테이지를 정한다. (별 의미 없다.) Context : server ThrottleIndicator green 50 ThrottleIndicator yellow 75 ThrottleIndicator red 90
** throttle 에서 사용하는 파일들 (( 별 의미 없다.)) Context : server ThrottleLockFile /usr/local/apache/logs/throttle.lock ThrottleRuntimeFile /usr/local/apache/logs/throttle.runtime
** Throttle 의 최대 Delay 시간 (기본 :60초, 0:제한하지 않음) Context : server ThrottleMaxDelay 60
** Throttle 정책 설정 (가장 많이 사용 ) Context : server,,, ThrottlePolicy 정책 제한 기간 가장 많이 사용한다. 정책은 Volume 관 Request 를 많이 사용해서 제한 한다.
** Throttle 통계화면 리로드 시간(기본 60초) Context : server ThrottleRefresh 초단위시간 ** Throttle RemoteUser ?? <== 이놈은 뭐에 쓰는 놈인지?? Context : server ThrottleRemoteUser 크기 정책 제한 기간
** 로컬사용자 제한 등록하기 (( 실 계정 사용자만 등록된다.) Context : server ThrottleUser 사용자 정책 제한 기간
(4) 통계보는방법 http://아이피/throttle-status : 관리자 모드 http://도메인/throttle-me : 일반 사용자가 보는 통계 페이지 http://아이피/~아이디/throttle-me
|
본 강좌는 개발자의 페이지의 원문을 읽어보구 적용해본 소감을 적은 것입니다. 일반적으로 알려진 강좌에는 숨어있는 기능이 없기에 이렇게 메뉴얼을 편역하게 되었습니다.
|