질문&답변
클라우드/리눅스에 관한 질문과 답변을 주고 받는 곳입니다.
리눅스 분류

아파치 자동재시작 스크립트 적용 시 에러

작성자 정보

  • 주광욱 작성
  • 작성일

컨텐츠 정보

본문

안녕하세요? 아파치 재시작 스크립트를 적용 하여 서버를 운영 중입니다.

아파치 접속갯수가 120개 이상일 경우 아파치를 재시작하고

아파치가 안떠있을 경우 아파치를 시작 하는 스크립트를 아래와 같이 적용하여

crontab으로 1분 마다 돌리고 있습니다.

############## 재시작 스크립트 #################

#!/bin/bash
ps_cnt=`ps aux|grep httpd|wc -l`
date=$(date +%y/%m/%d-%H:%M:%S)
PID_PATH=/usr/local/apache2/logs
PID_NAME=httpd.pid

if [ $ps_cnt -gt 120 ]
then
/usr/local/apache2/bin/apachectl restart
echo "[$date]  $ps_cnt apache Re-started" >> /var/log/httpd_restart_log;
sleep 3

elif [ $ps_cnt -le 3 ]
then
pgrep -x httpd | xargs kill -9
sleep 2
rm -rf $PID_PATH/$PID_NAME
/usr/local/apache2/bin/apachectl start
echo "[$date]  $ps_cnt apache started" >> /var/log/httpd_restart_log;
fi

###################################################

그런데 위의 스크립트가 정상적으로 작동할 경우 httpd error log를 보면

[Fri May 29 04:15:24 2009] [notice] SIGHUP received.  Attempting to restart
[Fri May 29 04:15:25 2009] [notice] Apache configured -- resuming normal operations

와 같이 출력 되면서 정상적으로 재시작이 됩니다.

그러나 에러가 발생 할 경우 120개 이상이 될 경우 재시작이 되지 않는 경우가 발생 합니다.

그래서 위의 스크립트 중 elif절을 추가하여 재시작이 않되어 아파치가 실행 되지 않을 경우

아파치를 강제로 죽이고 시작하는 스크립트를 추가 하였습니다. 그러나 정상적으로

아파치가 시작 되었지만 DB와 접속이 않되는 현상이 발생 합니다.

에러메세지는 다음과 같습니다.

[Fri May 29 23:12:12 2009] [notice] SIGHUP received.  Attempting to restart
can't access external Global Session Server: [0][name lookup timed out]
[Fri May 29 23:13:04 2009] [warn] Init: Session Cache is not configured [hint: SSLSessionCache]
[Fri May 29 23:13:04 2009] [error] [client 125.134.225.218]
[Fri May 29 23:13:04 2009] [notice] Apache configured -- resuming normal operations

이런 경우 재시작 스크립트의 문제인지? 아니면 아파치와 PHP의 설정의 문제인지

정말 감이 오지 않습니다. 위의 스크립트가 정상적이지 않다면 120개가 넘어 갈 경우

항상 오류가 발생 해야 하는데 잘 적용되어 실행 되다가도 간혹 저런 문제가 발생하기

때문에 에러난 후에 대처하기가 힘드네요??

과연 어떤 문제 일까요?? 고수님들의 고견 기다리겠습니다.

관련자료

댓글 1

황이님의 댓글

  • 황이
  • 작성일
저기 적혀 있는데요....
SSL세션 에러라구....
자동으로 하지를 않아서 잘모르겠네요...
일단 명령어가요..
/usr/local/apache/bin/apachectl -D SSL -k start
시작할 때는 이거일꺼구요...

중지할 때 명령어는

killall httpd
이었습니다.

좀 곰곰히 생각해보면, SSL 이건 아파치서버에서 어떻게 도는지 생각해보시면 될듯 합니다.

공지사항


뉴스광장


  • 현재 회원수 :  60,045 명
  • 현재 강좌수 :  35,861 개
  • 현재 접속자 :  74 명