사이트 내 전체검색
[linux] mod_throttle 로 1일 트래픽 제한하기
로빈아빠
https://cmd.kr/server/371 URL이 복사되었습니다.

본문

mod_throttle 로 1일 트래픽 제한하기

글쓴이 : 김우찬

어제 새벽에 작업을 하여 테스트 해 본 결과 무리없이 작동하기에 문서로 작성하고자 합니다.
아파치 컴파일은 DSO(Dynamic Shared Object)를 전제로 합니다.
그럼 DSO 방식과 Static 방식의 차이점은 무엇일가요?

DSO방식은 아파치를 먼저 컴파일하고 다른 모듈들을 추가로 설치할 때는 아파치를 재 컴파일하지 않고 한번 설정되어 컴파일된 아파치를 계속 사용하는 것이다.
즉, DSO방식은 아파치를 단 한번만 컴파일한다는 것이다. 이점은 관리, 설치면에서 커다란 장점이다.
Static 방식은 설치면에서 추가로 모듈을 설치하려고 하면 설정하려는 모듈만 설정하고 컴파일하는 과정이 필요할 뿐만 아니라 아파치 또한 그에 따라 컴파일을 하여야 한다.
이는 관리면에서 단점이 될 수 있다.

시스템 측면에서 이 두 가지의 차이점이 있다.

먼저 DSO는 아파치에 설치된 모듈이 필요할 때 시스템에 적재된다. 이는 클라이언트의 요청에 응답하는 요청시간이 다소 느릴 수 있지만, 하드웨어의 속도가 뒷받침된다면 해결이 될 수 있는 부분이다.
여하튼 이런 방식(DSO)은 시스템의 리소스(메모리, CPU)들을 적절하게 효율적으로 사용한다고 볼 수 있다.
이 방식은 예전에는 실험적인 성격을 가졌지만, 이젠 거의 안정 수준에 올라와 점점 DSO방식을 선호하고 있다.

또 다른 방식인 Static 방식은 이전 방식(DSO)와는 다소 차이가 있다.
이 방식은 아파치에 추가된 모듈이 아파치의 기동과 함께 모든 모듈을 포함하여 시스템에 적재한다.
만약 아파치의 기동과 함께 적재된 어떤 모듈이 클라이언트에 의해 거의 쓰지 않는다면 쓸데없이 시스템 리소스를 점유하고 있으므로 이는 비효율적이라 볼 수 있다.
또한 아파치와 각 모듈들은 설치시 복잡하다.
각 모듈과 설정된 아파치에 또 다시 모듈을 추가하려 할 때 아파치와 모듈을 다시 컴파일하여야 한다.
일단 MySQL은 설치가 되어있다고 가정하고 아파치와 PHP 를 연동하도록 하자.
아래는 컴파일 옵션이므로 참조하길 바랍니다.

[root@ ]# tar xvfz apache_1.3.27 -C /usr/local [root@ apache_1.3.27]# ./configure --prefix=/usr/local/apache [root@ ]# tar xvfz php-4.2.3 -C /usr/local [root@ php-4.2.3]# ./configure --with-apache=../apache_1.3.27 \ --with-mysql=/usr/local/mysql \ --with-gd --with-gif-dir=/usr/lib \ --with-png-dir --with-zlib-dir --with-jpeg-dir \ --with-imap --with-imap-ssl --with-kerberos \ --with-freetype-dir --enable-ftp --enable-socket \ --disable-debug --enable-track-vars [root@ php-4.2.3]# make [root@ php-4.2.3]# make install [root@ apache_1.3.27]# ./configure --prefix=/usr/local/apache \ --enable-rule=SHARED_CORE \ --enable-module=so --enable-shared=max \ --activate-module=src/modules/php4/libphp4.a \ [root@ apache_1.3.27]# make [root@ apache_1.3.27]# make install

이제 컴파일은 끝났으므로 트래픽을 제한할 수 있는 모듈을 추가만 해주면 됩니다.
일단 http://www.snert.com/Software/mod_throttle/ 접속하여 필요한 모듈을 다운받습니다.
그리고 그곳의 Installation 을 보시면 설치방법 및 설정에 대해 나와 있습니다.
전 DSO 방식이므로 다운받은 모듈을 적당한곳에 압축을 풀어준뒤 make install 하시면
자동으로 모듈이 추가됩니다.
[root@ ]# tar xvfz mod_throttle312.tgz [root@ ]# cd mod_throttle [root@ ]# make install

DSO 방식으로 한 이유에 대해서는 충분하게 아시리라 생각합니다.

그럼 아파치 설정파일과 Virual 설정부분에 아래와 같이 적용시켜주면 된다.
<IfModule mod_throttle.c> ThrottlePolicy Volume 500M 1d <Location /throttle-status> SetHandler throttle-status </Location> <Location /throttle-me> SetHandler throttle-me </Location> <Location /~*/throttle-me> SetHandler throttle-me </Location> <Location /throttle-status> <VirtualHost 211.xx.xxx.xxx> ServerAdmin root@xxx.com ServerName xxx.com DocumentRoot /home/xxx ThrottlePolicy Volume 500M 1d //하루 500M ThrottlePolicy Request 1000 1d //하루 천번 </VirtualHost>

트래픽을 웹상에서 쉽게 확인하는 방법은 다음과 같습니다.

관리자 - http://도메인명/throttle-status
계정사용자 - http://도메인명/throttle-me

댓글목록

등록된 댓글이 없습니다.

1,139 (11/23P)

Search

Copyright © Cmd 명령어 18.116.15.22