| 1968 번 글의 답장글: Re: 어떤 유저가 얼마만큼의 CPU를 사용하는지 알 수 있을까요? |
| 글쓴이: 산이
[홈페이지]
|
글쓴날: 2004년 03월 07일 00:03:41 일(새벽) |
조회: 838 |
[하얀피]님이 남기신 글:
>요즘 www 1번 서버와 3번서버가 랜덤적으로 폭주하고
있습니다.
>가끔 스스로 폭주가 멈추는 경우는 있지만...
>폭주할때마다 cpu가 99% 이상으로 차며 아파치 프로세서가
맥스를 넘어버립니다.
>어떤 계정에서의 무한루프쪽을 의심하고 있는데요.
>그래서 그런데..
>실시간으로 어떤 유저가 얼마만큼의 CPU를 사용하는지 알 수
있을런지요?
>일단 셸을 이용해서 cpu와 memory를 체크할 수 있는 스크립트를
사용하는데
>이것을 계정 list와 대조시켜서 계속 감지한다는게
조금--;;;;
>다른 방법이 없을까요???
>
>아래는 제가 구한 스크립트 입니다.
>#!/bin/sh
>#
># uid 찾기
>#
>ARG=$1
>FINDED_UID=$(cat /etc/passwd | grep ^$ARG | cut -f3 -d:)
>a=`ps -eo uid,pcpu |tail +2| tr -s [:space:]`
>set `echo $a`
>SUM=0
>SUM1=0
>while [ $# -gt 0 ]
>do
> FIRST=$1
> SECONT=$2
> if [ $FIRST -eq $FINDED_UID ]
> then
> SECONT_F=$(echo $SECONT|cut -f1 -d.)
> SECONT_S=$(echo $SECONT|cut -f2 -d.)
> SUM=`expr $SUM + $SECONT_F`
> SUM1=`expr $SUM1 + $SECONT_S`
> fi
>shift 2
>done
>SUM=`expr $SUM + $SUM1 / 10 `
>SUM1=`expr $SUM1 % 10`
>echo "현재 ${ARG}의 CPU 사용량은 $SUM.$SUM1% 입니다."
========================================
답변이 늦었습니다.
사용자 계정에 대한 체크는 이와 같이 하면 됩니다.
다만 그 결과치가 몇 % 이상일 경우 관리자 메일로 보낸다거나
어떤 메시지가 출력하도록 설정해 놓으면 되겠죠.
그런데
apche 는 보통 nobody 아니면 www 권한으로 돌아가기 때문에
이와 같은 원리로는 체크할 수 없습니다.
`가상호스트 == 계정'
이라는 공식이 성립되므로 아파치 쪽에서 설정 및
모니터링해야 합니다.
즉 어느 가상호스트에서
트래픽이 많이 생기는지 또한 어느
가상호스트에서
실행시간이 많이 걸리는지 체크해야 합니다.
전자는 log 파일과 MRTG (설치/설정)를 또는 throttle 를 기준으로
방향을 잡고
후자 역시 log 파일을 중점으로 모니터링해야 합니다.
[아파치 로그 포맷]
http://linuxchannel.net/docs/apache_log.txt
전자 :
년도월일시간분
호스트네임 전송바이트
LogFormat "%{%Y%m%d%H%M}t %v %b" trafficrx
CustomLog /usr/local/apache/logs/trafficrx_log trafficrx
후자는
년도월일시간분
호스트네임 실생한시간
LogFormat "%{%Y%m%d%H%M}t %v %T" runtime
CustomLog /usr/local/apache/logs/runtime_log runtime
물론 이 두개를 하나의 로그 파일로 관리할 수 도 있습니다.
|
이전글 : 어떤 유저가 얼마만큼의 CPU를 사용하는지 알 수 있을까요?
다음글 : Re: Re: 어떤 유저가 얼마만큼의 CPU를 사용하는지 알 수 있을까요?
|
from 61.254.74.228
JS(Redhands)Board 0.4 +@
|