KWMBLOG
프로세스들의 기능이 갑자기 멈췄을 때 본문
아파치의 경우로 설명하겠다.
아파치가 갑자기 종료가 되는 경우는 매우 많지만
그 중 한가지라고 보면 된다.
아파치가 갑자기 중단되어
다시 실행을 했을 때,
아무 에러도 안나오고 실행이 된 척을 한다.
근데 프로세스를 보면 실행이 안되고 있다.
이럴 때는
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줄 요약
프로세스가 멈췄을 때 아무 에러메시지가 안뜬다면 의심해보자.
로그는 티가 나지만 세션은 티가 안난다.
차근차근 진행해보면 해결된다.
'리눅스 > 운영참고' 카테고리의 다른 글
DB 이중화 작업(HA 구성) 1편 (0) | 2018.12.06 |
---|---|
프로세스의 메모리 사용량 확인 (0) | 2018.12.04 |
Device is busy (0) | 2018.12.01 |
부팅 시 파일시스템이 깨졌을때 조치방법 (0) | 2018.12.01 |
리눅스 OS의 스펙 확인 방법 (0) | 2018.12.01 |