서버관리2015. 5. 29. 12:11
300x250



잘 돌아가던 웹서버가 갑자기 MySQL DB Error!!! 를 내 뿜는다. ㅡㅡ



1. 현상


그런데, 현상이 조금 애매하다. 

우선, 같은 서버의 다른 웹사이트는 별 문제 없어 보인다. 

phpmyadmin 으로 접속해 보면, 로그인이 안된다. 좀더 정확히는, 로그인이 되는 듯 한데, 바로 로그아웃 되어 버린다. 



2. 원인


처음엔, 디비서버의 에러 쪽으로 접근해 보았다. 

mysql 로그에는 별다른 것이 보이지 않는다. 


그래서, apache 웹서버의 로그를 살펴 본다. 

/var/log/httpd/error_log 를 열어 보니, 이상한 것들이 쌓여 있다. 


[warn] child process xxxx still did not exit, sending a SIGTERM

[warn] child process xxxx still did not exit, sending a SIGTERM

[warn] child process xxxx still did not exit, sending a SIGTERM

[warn] child process xxxx still did not exit, sending a SIGTERM

....

[error] child process xxxx still did not exit, sending a SIGKILL

[error] child process xxxx still did not exit, sending a SIGKILL

[error] child process xxxx still did not exit, sending a SIGKILL

[error] child process xxxx still did not exit, sending a SIGKILL

....

[error] could not make child process xxxx exit, attempting to continue anyway

[error] could not make child process xxxx exit, attempting to continue anyway

[error] could not make child process xxxx exit, attempting to continue anyway

[error] could not make child process xxxx exit, attempting to continue anyway

....

이런 것들이 1초에 수십개씩 쌓여 있다. 

아파치 프로세스를 살펴 본다. 
# ps auxf 

/usr/sbin/httpd 가 수십개가 떠 있다. 100단위를 넘어 가는 것 같다. 

load average 를 살펴보면, httpd 프로세스 여러개에서 부하가 걸리는 것으로 나온다. 


3. 처리

디비쪽 보다는 웹서버 쪽에 문제가 있는 것으로 판단하여, 아파치 웹서버를 재시작해 보았다. 
웹사이트가 정상적으로 동작한다. 

httpd 프로세스도 1개 남짓 떠 있고, 정상적으로 보인다. 


4. 결론

구글링을 해 보니, 아파치 프로세스 갯수 초과가 원인이라는 진단이 보인다. 
maxclient 등을 조정해서 늘릴 수 있다고 하는데, 이미 256 개로 최대로 설정되어 있다. ^^

아파치의 비정상적인 동작으로 인해 httpd child process 갯수가 늘어나, 
더이상 자식 프로세스를 만들수가 없어서 발생한 것으로 잠정 결론 내린다. 

아파치 웹서버를 재시작 해 주면 된다. 
이 참에 yum update 도 하고, 서버도 재시작 해 버렸다. 



300x250
Posted by 마스타