리눅스 쉡스크립트를 작성 도움 부탁해요.
글쓴이: coollemon / 작성시간: 금, 2011/05/27 - 10:13오전
안녕하세요.
쉡스크립트를 작성해서 cron에 넣으려고 합니다.
실행파일이 cpu 90%를 넘어가면
cron으로 자동으로 해당실행파일을 죽이고 apache를 리스타트를 해주려고 합니다.
정보는 다음과 같해요
조건(IF)
1. cpu 사용률이 90%이상되는 실행파일이 있는지 체크(ps -aux 이용 등)
2. 접속자수가 500명 이상인가 체크 (netstat -anp | grep :80 | grep ESTAB | wc -l)
조건만족시 해결(THAN)
1. 해당실행파일을 프로세서를 kill 한다.
2. 아파치를 리스트한다
if [조건]; then
apache 재시작
fi
내용이어려운것 같아요
고수님
작성도움부탁드립니다...
감사합니다.
Forums:
제일 관건은 CPU 90% 넘었을 때 스크립트가
제일 관건은 CPU 90% 넘었을 때 스크립트가 수행이 되느냐 안 되느냐(교착상태) 겠군요.
1. 전체 cpu 사용량을 기준으로 해야지 특정
1. 전체 cpu 사용량을 기준으로 해야지 특정 프로세스의 cpu 사용량을 기준으로 하면 골때리는 문제가 생깁니다. (해보시면 "아 그렇구나" 아시겠지만..)
2. 그냥 ps결과에서 cpu 사용량 기준으로 정렬한 후 Top 1을 kill하시는게 좋을듯 합니다.
3. 그냥 apache restart를 한다면 굳이 프로세스 kill할 필요가 있는지는 테스트해보아야 할 것 같습니다. 대처 시나리오를 조심해서 테스트해보세요.
4. 한 80이면 안될까요? 90까지 올라가는건 위험할것 같기도 하고 그렇습니다. 아무리 네할렘 이후의 아키텍쳐가 좋다한들 그래도 x86인데;;
네 구지 kill 하지 않고 리스타트 하는 방식이
네 구지 kill 하지 않고 리스타트 하는 방식이 좋은것 같습니다.
그런데, 정확히 어떤 프로세스를 죽이기 원하는 건지
그런데, 정확히 어떤 프로세스를 죽이기 원하는 건지 불확실하네요. CPU 사용량이 많으면, 프로세스에 상관없이 죽이는 것인가요?
C FAQ: http://www.eskimo.com/~scs/C-faq/top.html
Korean Ver: http://cinsk.github.io/cfaqs/
네 그렇습니다. 보통 전체 cpu율 사용율이
네 그렇습니다. 보통 전체 cpu율 사용율이 90%넘어가면 한 비정상적인 프로세서가 다 잡아먹더라구요
그래서 그때는 리스타를 해줄려고 합니다
프로세스 하나가 cpu를 많이 잡아먹는다면 서비스
프로세스 하나가 cpu를 많이 잡아먹는다면 서비스 로직을 다시한번 살펴보시고 문제를 일으키는 페이지를 찾아서 수정하시는것이 좋을 듯 합니다.
웹서비스 데몬단에서 조치하는건 당장의 응급조치로는 맞는 말이지만 근본적인 해결책이라고 보기는 어려워 보이네요.
댓글 달기