KWMBLOG

프로세스들의 기능이 갑자기 멈췄을 때 본문

리눅스/운영참고

프로세스들의 기능이 갑자기 멈췄을 때

KWMBLOG 2018. 12. 1. 12:08

아파치의 경우로 설명하겠다.

아파치가 갑자기 종료가 되는 경우는 매우 많지만

그 중 한가지라고 보면 된다.




아파치가 갑자기 중단되어

다시 실행을 했을 때,

아무 에러도 안나오고 실행이 된 척을 한다.


근데 프로세스를 보면 실행이 안되고 있다.


이럴 때는

df -i

를 입력해서 아이노드가 얼마나 사용중인지 확인해야 된다.

파일의 갯수가 너무 많아도 문제가 된다.

(리눅스는 까탈스럽다.)



지금 서버의 상황은 정상이다.



for i in /디렉토리/*;do echo $i; find $i | wc -l;done

을 입력해준다.

여기서 디렉토리는 df -i를 했을 때,

100% 차있는 디렉토리를 입력해주면 된다.


이미지처럼 결과가 나오는데 슥 훓어보고

제일 숫자가 큰쪽으로 디렉토리를 잡아 계속 들어가보면 답이 나온다.




아파치의 경우 보통

로그 정리를 안한 경우이거나

사용자 디렉토리 안에 세션을 저장하는 경우

두 종류로 나눠진다.

(내 경험상)


로그 같은 경우에는

df -h

를 했을 때 티가 나서

정리를 할 수 있지만,

세션의 경우에는

용량이 너무 작아서 티도 안난다.


그럼 세션 디렉토리로 가서

rm -rf sess_* 를 입력해준다.




순순히 삭제를 받아들인다면

아직 파일의 갯수가 적어서 그렇지만

이 까탈스러운 리눅스는

인수명단이 길어서 어쩌고저쩌고를 띄우면서 삭제를 거부한다.

(명령을 거부하다니..)


이럴때의 방법은 몇개씩 끊어서 삭제 하거나

발견즉시 삭제하는 방법이다.

1. find ./* -name "sess_*" -print0 | xargs -0 rm -rf

2. ls | xargs -n 1000 rm -f

3. find ./* -name sess_* -exec rm -f {}\'


위 3가지 방법 중 한가지를 사용하여 삭제를 해주고,

(나는 2번 방법으로 한다.)

다시 실행 해주면

이제서야 말 잘듣는 서버로 돌아온다.


여기서 1000 rm -f 는 파일을 천개씩 지운다는 뜻이다.

find ./* -name "sess_" 부분에서

sess_ 는 이름이 다를 수도 있으니

확인한번 해보고 삭제하는 것이 좋다.

(확인하는데 세월걸릴수도 있다.)




위에서 세월걸릴 수도 있다고 했는데,

실제로 한 고객사에서 전화가 와서

살펴 봤는데

ls -l 결과 뜨는데만 한시간 걸렸었다.


3줄 요약

프로세스가 멈췄을 때 아무 에러메시지가 안뜬다면 의심해보자.

로그는 티가 나지만 세션은 티가 안난다.

차근차근 진행해보면 해결된다.



Comments