RSS구독하기:SUBSCRIBE TO RSS FEED
즐겨찾기추가:ADD FAVORITE
글쓰기:POST
관리자:ADMINISTRATOR

아파치에 접속하는 사용자들의 대역폭을 제한한다. mod_throttle 와 비슷하지만, 용도가 다르다.
이놈들은 아파치 정식 모듈이 아니니.. DSO모드로 올렸다가. 이상하면 내린다.^^;

1. 개념
  한 접속당 일정양(Byte/Sec)을 정해 놓고, 그 양이 넘으면 delay 시켜 일정한 트래픽을 유지한다.


2. 설치
  (1) 먼저 모듈을 구한다. 어디서 ?? 개발자 사이트에서
    

http://www.cohprog.com/v3/bandwidth/intro-en.html
   
wget
ftp://ftp.cohprog.com/pub/apache/module/1.3.0/mod_bandwidth.c


  (2) 컴파일 및 설치 (apxs 를 사용하여 한방에 끝낸다.)
    

/usr/local/apache/bin/apxs -i -a -c mod_bandwidth.c
    

## 옵션 설명.
      -i : 라이브러리 디렉토리에 so 파일 복사하라는 옵션
      -a : httpd.conf 파일에 LoadModule 설정을 하라는 옵션
      -c : 컴파일 하라는 옵션

** (( 주의 ))

mkdir /tmp/apachebw
mkdir -p /tmp/apachebw/master/
mkdir -p /tmp/apachebw/link
chown -R nobody:nobody /tmp/apachebw

이렇게 디렉토리를 만들어주지 않으면 작동하지 않는다.. error_log 에 로그만 뿌린다.^^


3. 설정
  (1) httpd.conf 파일을 열어서 다음과 같이 설정한다.

## 1인 트래픽 제한 모듈 로딩.
LoadModule bandwidth_module   libexec/mod_bandwidth.so

  아파치가 실행할때의 사용자권한(nobody 또는 apache )으로 읽기,쓰기,실행권한이 있는 디렉토리가 있어야 한다.
  기본적으로 /tmp/apachebw , /tmp/apachebw/link , /tmp/apachebw/master 이렇게 생성한다.
  변경하려면 BandWidthDataDir 지시자를 이용한다.
  (위 디렉토리에 문제가 있으면 error로그 파일에 남기고 ,기능은 비활성화 된다.)


지시자:
1. BandWidth 에서 사용할 임시 디렉토리 지정 (기본:/tmp/apachebw)
BandWidthDataDir 디렉토리: --> 따로 설정을 안해도 기본으로 잡힌다.
  사용처 : 전체설정

2. 이제 전송 속도 제한 기능을 하는 모듈을 사용하겠다는 것을 지정해
   주어야 합니다. 디렉토리별 설정 위에 다음 줄을 추가하시면 됩니다.

BandWidthModule On


* BandWidthModule 사용 여부 (기본 Off)
BandWidthModule On 또는 Off
  사용처 : 전체설정, <Directory>별 설정


 가상호스트 안에 사용할경우 가상호스트 마다 BandWidthModule On 설정을 하여야 하며,
<Drectory> 지시자 안에 넣을때는 따로 넣어주지 않아도 된다.

* BandWidth 에서 지연할 시간 설정 (microsecond 단위)
BandWidthPulse <microseconds>
  사용처 : 전체설정


예전에는 지연시간이 1초로 고정되어 있었다. 이 말은 512Bit/sec 라면. 1KBit 를 보내려면,
1KBit을 보낸후에 2초 기다린후 512Bit 을 보냈다. 그렇지만, "BandWidthPluse 1000000" (1초를    설정하면, 512Bit을 보내고 1초 기다린후 512Bit을 보낸다.
이 값을 설정하면, 보다 부드럽게 제한하면서 보낼수 있다. 설정값을 (1/5 초) 이상 사용하길 권장한다.


  장점 : 부드럽게 트래픽을 제한할 수 있다.
  단점 : 패킷의 양이 많아지며, 값이 적을수록 서버에 부하를 많이 준다.

3. 이제 실제적인 전송 속도 제한의 옵션을 알아 보겠습니다.  

   BandWidth, LargeFileLimit, MinBandWidth 이렇게 세가지의 지시자가
   있습니다. 각각에 대해서 알아 봅시다.

    o BandWidth

       문  법: BandWidth 도메인|IP주소|all 속도
       기본값: 없음
       사용처: 전체 설정, 디렉토리별 설정, .htaccess

 

      호스트에 따라 속도의 제한을 걸 수 있습니다. all은 모든 호스트에
       대해서 제한을 거는 것입니다. 도메인이나 IP주소로 접속 호스트를
       지정할 수 있습니다. 그리고 네트워크/마스크 포맷*으로 지정할 수도
       있습니다. (예: 192.168.0.0/24)

       속도는 Bytes/second로 나타냅니다. 0의 경우는 제한이 없는 것입니다.

       디렉토리별 설정에서 사용한 예를 들겠습니다.

 

       <Directory /home/httpd/html>
         BandWidth 192.168.1 0
         BandWidth foobar.net 0
         BandWidth all 1024
       </Directory>
           
      /home/httpd/html 디렉토리에서의 제한을 한 것입니다. 192.168.1.* IP
       주소를 가진 호스트와 *.foobar.net이라는 도메인명을 사용하는
       호스트에 대해서는 제한을 걸지 않으며 그 외 모든 접속에 대해서
       1024Bytes/sec으로 제한을 걸었습니다.

 

   o LargeFileLimit

       문  법: LargeFileLimit 파일크기 속도
       기본값: 없음
       사용처: 전체 설정, 디렉토리별 설정, .htaccess

 

       일정 이상의 크기를 가진 파일을 누군가가 받아 가려 할 때 그 속도의
       제한을 걸 수 있습니다. 파일크기는 KByte 기준이며 속도는 역시
       Bytes/secound입니다.


       LargeFileLimit 1024 4096
       LargeFileLimit 2048 2048


      위 예제는 1024 ~ 2047KB 크기의 파일을 받아가려 할 때 속도를
       4KB/sec으로 제한하고 2048KB 이상의 파일은 2KB/sec으로 제한을 하는
       것입니다.

 

     o MinBandWidth

       문  법: MinBandWidth 도메인|IP주소|all 속도
       기본값: all, 256
       사용처: 전체 설정, 디렉토리별 설정, .htaccess

      

      데이타 전송의 최저 속도를 지정하게 됩니다. 예를 들어서 설명하는
       것이 가장 좋을 것 같군요.

       BandWidth를 4096 (4KBytes/sec)으로 지정하고 MinBandWidth가 1024로
       지정이 되어 있을 때:

         - 지정된 호스트에서 하나만 접속할 경우, 4096bytes/sec이 최고의
           속도가 됩니다.

         - 지정된 호스트에서 두개가 동시에 접속할 경우, 각각의 세션에 대해
           2048Bytes/sec이 최고의 속도가 됩니다.

         - 더 많은 동시 접속이 일어나도 세션 당 최고 속도는 1024Bytes/sec
           이하로는 줄지 않습니다. (MinBandWidth 값이 1024기 때문에)

      MinBandWidth가 "-1"로 지정되면 모든 세션에 대해 최고 속도는
       BandWidth나 LageFileLimit에서 지정한 속도가 나올 수 있게 됩니다.

       BandWidth를 4096으로 지정하고 MinBandWidth가 -1이라면 동시에 지정된
       호스트에서 몇개의 접속을 하더라도 각 세션의 속도는 4096Bytes/sec
       까지 나오게 되는 것입니다.


4. 최대 연결수 제한 (기본 0 제한없음)
    MaxConnection <connections>
    사용처 : <Directory>별 설정


    동시연결수가 connections 이상이면 연결을 거부한다.
    (가상 호스트별 최대 동시 연결수 제한에 좋을것 같음^^;)


예))  가상호스트 속에 들어간다.
        BandWidthModule On
        ## 50M 넘는 파일은 100KByte/Sec 으로 제한 한다.
        LargeFileLimit 51200 102400
        ## 동시에 5개의 접속을 허용한다.
        MaxConnection 5

이올린에 북마크하기
2008/02/02 13:21 2008/02/02 13:21
http://jiny.kr/trackback/270
전체 (406)
지니소식 (4)
자료실 (4)
정보|뉴스 (5)
SmartPhone (1)
Languages (206)
Server (153)
Database (27)
Design (4)
Gallery (0)
분류하기귀찬.. (2)
«   2012/02   »
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29      
  1. 창의력과 상상력을 넘어서  2009
    Tomcat 6.0 기본 환경 설정
  2. 닥공  2009
    서블릿 tomcat 6.0 실행시 에러
  1. 2010/07 (1)
  2. 2010/05 (1)
  3. 2010/02 (3)
  4. 2010/01 (3)
  5. 2009/05 (2)
Statistics Graph