레이블이 www인 게시물을 표시합니다. 모든 게시물 표시
레이블이 www인 게시물을 표시합니다. 모든 게시물 표시

2012-09-14

FreeBSD] 아파치 서버과부하 해결책 - lingerd 설치법

작성 : 구자열 by webhost (danda@nate.com)

1. lingerd란 무엇일까?


아파치에서 갑작스런 libhttpd.ep 혹은 httpd가 상승하여 cpu혹은 메모리를 과도하게 점유할 경우, 일정 튜닝으로 이를 막을 순 있지만, Dos상당의공격에서는 데먼은 저절로 죽어버린다.

이때, lingerd라는 엑셀레이트를 설치하면, 아파치는 해당 과부하 프로쎄서를 죽이면서 서버가 죽는 것을 방지할 수 있다.

2. lingerd 구하기


http://www.iagora.com/about/software/lingerd/

3. 설치하기


mkdir -p /var/run/lingerd/
chown nobody.nobody /var/run/lingerd/
chmod 700 /var/run/lingerd/

tar xvzf lingerd-xxx.gz
cd lingerd-xxx
make
이렇게 하면 lingerd란 바이너리가 생긴다.

cp lingerd /usr/local/sbin
cp extra/lingerd.rc /etc/rc.d/init.d/lingerd
chkconfig --level 3 lingerd on
이렇게 해서 부트로더에 올린다.

/etc/rc.d/init.d/lingerd start


    cp apache-1.3/ap_lingerd.c li_config.h $APACHE/src/main/
    patch -p0 -d $APACHE/src/ < apache-1.3/aplinger.diff

이 과정은 아파치를 위한 과정이다.
아파치소스가 있는 폴더가 $APACHE라고 가정해서 입력하라.
즉 $APACHE는 님의 환경에 맞는 절대경로를 입력하면 된다.

이제 패치가 완료되면, APM설치과정과 같이

apache> ./configure --prefix=/usr/local/apache
apache> cd ../php-4.0.24
php> ...설치과정진행
php> cd ../apache
apache> 설치과정진행 ./configure....-> make -> make install

이렇게 하여 설치를 완료한다.

apache 재구동한다.

설치완료
- 이제부터 /var/log/messages 에 로그가 생성된다.
- /var/run/lingerd/에는 프로쎄서가 동작한다.
- /usr/local/apache/logs/error_log에는 문제발생시, 에러로그가 기록된다.

이렇게함으로써 아파치에 대한 안전한 운영이 가능해진다.

FreeBSD]rotatelog를 사용하여 아파치 로그 줄이기.


rotatelogs - 아파치 로그를 순환하기위해 파이프로 연결할 로그 프로그램


가능한 언어:  en  |  ko



rotatelogs는 아파치의 파이프 로그파일 기능을 위한 간단한 프로그램이다. 예를 들어:


  CustomLog "|bin/rotatelogs /var/logs/logfile 86400" common 



그러면 /var/logs/logfile.nnnn 파일을 만든다. nnnn은 로그를 시작한 시스템시간이다 (이 시간은 항상 순환기간의 배수이다. 그래서 cron 스크립트로 처리하기 쉽다). 순환기간 (여기서는 24 시간) 마다 새로운 로그를 시작한다.



  CustomLog "|bin/rotatelogs /var/logs/logfile 5M" common 



이 설정은 로그파일 크기가 5 메가바이트가 될때마다 순환한다.



  ErrorLog "|bin/rotatelogs /var/logs/errorlog.%Y-%m-%d-%H_%M_%S 5M" 



이 설정은 오류로그 파일 크기가 5 메가바이트가 될때마다 errorlog.YYYY-mm-dd-HH_MM_SS와 같은 파일을 만들어서 오류로그 파일을 순환한다.



개요
옵션
포팅가능성 


  개요

  rotatelogs logfile [ rotationtime [ offset ]] | [ filesizeM ]


  옵션

  logfile 

  로그파일의 경로와 이름. logfile에 '%' 문자가 있다면 strftime(3)의 형식문자열과 같이 처리한다. '%' 문자가 없다면 뒤에 초단위 시간 .nnnnnnnnnn을 자동으로 붙인다. 두 형식 모두 현재 기간부터 시작시간을 계산한다.


  rotationtime 

  로그파일을 순환할 초단위 시간.


  offset 

  UTC에서 분단위 시간차이. 생략하면 0으로 가정하여 UTC를 사용한다. 예를 들어, UTC -5 시간대의 지역시간을 사용한다면 아규먼트로 -300을 지정한다.


  filesizeM 

시간이 아닌 크기를 지정할때 메가바이트단위 최대 파일크기 뒤에 M을 붙인다. rotationtime과 offset 대신 이 파라미터를 사용한다.




  포팅가능성


  다음 로그파일 형식문자열 표현은 모든 strftime(3) 구현이 지원해야 한다. 라이브러리 특유의 확장은 strftime(3) manpage를 참고하라.



  %A (지역화된) 완전한 요일 이름
  %a (지역화된) 3-문자 요일 이름
  %B (지역화된) 완전한 달 이름
  %b (지역화된) 3-문자 달 이름
  %c (지역화된) 날짜와 시간
  %d 2-자리 일
  %H 2-자리 시간 (24 시간 시계)
  %I 2-자리 시간 (12 시간 시계)
  %j 3-자리 날짜수
  %M 2-자리 분
  %m 2-자리 달
  %p (지역화된) 12 시간 시계의 am/pm
  %S 2-자리 초
  %U 2-자리 주일수 (주의 첫번재 날은 일요일)
  %W 2-자리 주일수 (주의 첫번재 날은 월요일)
  %w 1-자리 요일수 (주의 첫번째 날은 일요일)
  %X (지역화된) 시간
  %x (지역화된) 날짜
  %Y 4-자리 연도
  %y 2-자리 연도
  %Z 시간대 이름
  %% 문자그대로 `%'



from: http://httpd.apache.org/docs-2.0/programs/rotatelogs.html

FreeBSD] ab (아파치 응답속도를 측정하는 툴)


ab
ab는 “Apache HTTP server Benchmarking tool”의 약어로서  아파치서버의 응답속도를 측정하는 밴치마킹툴입니다.
ab라는 툴을 이용하여 아파치의 응답속도를 테스트하고 그 결과를 다양한 방면으로 확인할 수 있습니다.  

사용형식
ab [ -k ] [ -i ] [ -n 요청수 ] [ -t 시간제한 ] [ -c 동시접속 ] [ -p POST file ] [ -A 인증 유저이름:패스워드 ] [ -P 프락시인증 유저이름:패스워드 ] [ -H Custom header ] [ -C Cookie name=value ] [ -T content-type ] [ -v verbosity ] ] [ -w HTML 출력 ] ] [ -x 속성 ] ] [ -y  속성 ] ] [ -z  속성 ] [http://]서버이름[:port]/path 

ab [ -V ] [ -h ]

사용예 #1
V를 사용하시면 설치되어 있는 ab의 버전을 확인하실 수있습니다. 아래 결과는 현재 필자가 사용하고 있는 ab의 버전이 2.0.40이라는 것을 표시하고 있습니다. 
[root@host3 bin]# ab -VThis is ApacheBench, Version 2.0.40-dev <$Revision: 1.116 $> apache-2.0
Copyright (c) 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Copyright (c) 1998-2002 The Apache Software Foundation, http://www.apache.org/
[root@host3 bin]#
사 용예 #2
수퍼유저코리아(www.superuser.co.kr)의 응답속도를 측정한 것입니다. 참고로 사이트URL의 마지막에는 반드시 "/"가 들어가야함에 주의하시기 바랍니다.  여기서 사용한 옵션 -n은 측정을 위한 웹페이지 요청수를 의미합니다. 즉 "-n 1"이라고 한 것은 지정한 URL을 한번의 요청만으로 결과를 표시한다는 의미입니다.
[root@host3 bin]# ab -n 1 http://www.superuser.co.kr/
This is ApacheBench, Version 2.0.40-dev <$Revision: 1.116 $> apache-2.0
Copyright (c) 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Copyright (c) 1998-2002 The Apache Software Foundation, http://www.apache.org/
Benchmarking www.superuser.co.kr (be patient).....done

Server Software:        Apache/2.0
Server Hostname:        www.superuser.co.kr
Server Port:            80
Document Path:          /
Document Length:        458 bytes
Concurrency Level:      1
Time taken for tests:   1.499567 seconds
Complete requests:      1
Failed requests:        0
Write errors:           0
Total transferred:      700 bytes
HTML transferred:       458 bytes
Requests per second:    0.67 [#/sec] (mean)
Time per request:       1499.567 [ms] (mean)
Time per request:       1499.567 [ms] (mean, across all concurrent requests)
Transfer rate:          0.00 [Kbytes/sec] received
Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:       17   17   0.0     17      17
Processing:  1482 1482   0.0   1482    1482
Waiting:     1481 1481   0.0   1481    1481
Total:       1499 1499   0.0   1499    1499
[root@host3 bin]#
사 용예 #3
다음과 같이 -c옵션을 사용하면 한번에 수행할 다중 요구수를 지정할 수 있습니다.  지정하지 않는다면 기본값은 1이 됩니다.  테스트시에 c 30이라고 주었으며, 결과를 보시면 concurrency Level30이라는 것을 보실 수 있을 것입니다. 즉, 동시에 다중세션을 테스트한 것이며 그 결과를 확인 할 수 있습니다. 결과값의 분석은 앞에 설명된 내용과 비교하면서 보시기 바랍니다.
[root@host3 bin]# ab -c 30 http://www.yahoo.com/
This is ApacheBench, Version 2.0.40-dev <$Revision: 1.116 $> apache-2.0
Copyright (c) 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Copyright (c) 1998-2002 The Apache Software Foundation, http://www.apache.org/
Benchmarking www.yahoo.com (be patient).....done

Server Software:       
Server Hostname:        www.yahoo.com
Server Port:            80
Document Path:          /
Document Length:        32247 bytes
Concurrency Level:      30
Time taken for tests:   1.75287 seconds
Complete requests:      1
Failed requests:        0
Write errors:           0
Total transferred:      32600 bytes
HTML transferred:       32247 bytes
Requests per second:    0.93 [#/sec] (mean)
Time per request:       32258.610 [ms] (mean)
Time per request:       1075.287 [ms] (mean, across all concurrent requests)
Transfer rate:          28.83 [Kbytes/sec] received
Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:      208  208   0.0    208     208
Processing:   866  866   0.0    866     866
Waiting:      219  219   0.0    219     219
Total:       1074 1074   0.0   1074    1074
root@host3 bin]#

저작권:수퍼유저코리아(www.superuser.co.kr), 무단 재배포및 복사를 금합니다.