|
커피향이 나는 *NIX
커피닉스
시스템/네트웍/보안을 다루는 곳
|
|
|
|
| 이전 주제 보기 :: 다음 주제 보기 |
| 글쓴이 |
메시지 |
ph 손님
|
올려짐: 2008.6.27 금, 10:20 am 주제: 무한루프에 빠진 쓰레드, 늘어나는 디스크용량 |
|
|
OS는 zLinux이고, ibm java 1.4.2를 사용하는 시스템입니다.
몇달전에 고객으로 부터 디스크용량이 부족해서 시스템을 재기동했더니
정상으로 돌아왔다는 장해를 연락받은적이 있습니다.
시스템를 재기동 시켜버렸기때문에 조사할 내용도 거의 남아있지 않았습니다.
그래도 혹 같은 장해가 발생하면 꼭 ps명령으로 프로세스내용을 남겨줄것과
df, du명령어로 시스템기동 전과후, 장해발생시의 디스크 용량을 남겨줄것을 부탁했습니다.
엊그제 같은 현상이 일어났습니다.
예전에 부탁드린데로 프로세스의 실행 상황이나 장해가 발생하기전의
디스크용량, 그리고 시스템의 내부로그등이 상세히 남아있어서 조사에 들어갔습니다.
장해가 발생된 시점의 프로세를 보니 실제로 cpu를 94%정도 차지하며
11시간동안이나 기동되고 있는 쓰레드가 있었습니다.
내부로그를 따라서 찾아들어가니 소켓으로 결과를 수신받는 쓰레드에
while (readcnt < maxCnt)
try {
readCnt += socket.read(buffer, 0, ...);
if (readCnt == -1) {
break;
}
...
} catch (IOException ioexp) {
ioexp.printStackTrace();
}
....
위와 같은 구문이 있습니다. 로그에는 상대쪽 소켓에서도 에러가 일어난게 확인되었기
때문에 위에 구문에서 IOException가 발생됐을겁니다.
근데 그 Exception를 저렇게 catch해버리니 수신바이트수에 변화도 없고
무한루프에 빠지는겁니다.
의도적으로 에러를 발생시켜서 같은현상을 재현했습니다.
일단, 무한루프에 빠지는 쓰레드도 확인됐고, 원인도 파악됐습니다.
여기서 종료되지 않은 프로세스건은 알겠는데, 디스크가 점점 늘어나는 현상은
설명이 되지 않네요. 같은 현상을 windows와 linux에서 재현을 해봤는데
쓰레드가 무한루프에 빠져서 cpu를 90%이상 차지하는건 일어나는데
어떤경우도 디스크자체의 용량이 늘어나지는 않습니다
장해발생시 실제로 움직이고 있는 쓰레드도 위의 쓰레드밖에 없구요.
다른 쓰레드들은 다들 대기중입니다.
그리고 특별히 내부로그를 출력하는 쓰레드도 없습니다.
cup를 독점하면서 무한루프에 빠진 쓰레드는 있지만 디스크가 늘어가는거 와는
관계없다고 보고 하고 싶지만(재현테스트에서는 그렇게 보입니다),
실제로 고객한테 받은 df, du의 결과를 보면 시스템을 종료했을때
2G 가까운 디스크용량이 반환됐기에 뭔가 있기는 있는거 같습니다.
무한루프에 빠진 쓰레드가 ioexp.printStackTrace(); 이렇게 exception를 출력할때
디스크용량과 관계된 부분이 있을까요?
아니면 os에 따라서 에러를 따로 어딘가에 관리(저장)하는 옵션같은게 있나요?
이건 메모리가 증가하는것도 아니고 디스크용량이 증가하는 경우라 상당히
난해하군요.
장해시의 df와 시스템을 재기동시킨후의 df
/dev/dasda1 4.9G 4.9G 0 100% / -> disk full.
/dev/dasda1 4.9G 2.8G 1.9G 60% / -> 2G정도 반환됨.
고객과 같은 환경에서 (zLinux, ibm java) 재현테스트를 해보는게 정답이겠지만
빠른 시일내에 같은 환경을 구축하기가 어려운관계로 혹 비슷한 경험이나
체크 해봐야 될 내용이 있으면 조언을 부탁드립니다. |
|
| 위로 |
|
 |
tmp user 손님
|
올려짐: 2008.6.30 월, 11:06 am 주제: lsof 돌려보시죠? |
|
|
저는 file size 체크할때 lsof 사용합니다.
해당툴 돌리셔서 체크해보시면 어떤 프로세서가 어떤 파일을 얼마만한 용량으로 사용하는지 나옵니다. |
|
| 위로 |
|
 |
|
|
새로운 주제를 올릴 수 없습니다 답글을 올릴 수 없습니다 주제를 수정할 수 있습니다 올린 글을 삭제할 수 없습니다 투표를 할 수 없습니다
|
Powered by phpBB © 2001, 2005 phpBB Group
|