[질문] tail -f의 반영 시기 관련
글쓴이: reverse79 / 작성시간: 수, 2010/08/11 - 4:37오후
안녕하세요.
CENTOS 최신버전을 사용중이며 Jboss 서버가 설치되어 있습니다.
개발자들이 디버깅을 위해 "tail -f 로그파일명" 명령으로 로그를 조회하는데
잘 동작하다가 가끔씩 특정 시간동안 로그가 출력되지 않는 경우가 있습니다.
그런경우에는 tail -f명령을 취소하고 다시 조회하면 조회가 되기도 하고...
혹시나 해서 로그 파일이 존재하는 폴더에 가서 ls 명령으로 파일을 조회해보면
폴더 자체에도 최신 파일이 아닌 과거 파일들이 존재하고 있습니다.
예를들어, 2010-08-11에 ls 명령으로 로그 폴더를 조회해 보면,
로그는 실시간으로 출력하기때문에 2010-08-11자의 로그 파일이 존재해야 하는데
로그 폴더에는 가장 최신 파일이 2010-08-10일처럼 오늘이 아닌 과거의 로그까지만 존재한다고 하네요.
관련 문제가 해결되기까지는 짧은 시간은 아니고 조금 긴 시간이 지나서 다른 폴더로 이동하다보면
로그 폴더에 정상적으로 오늘의 로그가 생성되어있고 tail -f 명령도 잘 동작한다고 하더군요.
일종의 Write(?) 랙(?)같은데 랙이라고 하기에는 관련 문제가 풀리는 시간이 너무 긴것 같은데...
이런 경우 원인을 규명하기 위해서는 어떤 식으로 접근해야 하는지요?^^;;
그리고, tail -f 명령으로 잘 출력되던 파일이 갑자기 출력되지 않는 경우는 주로 어떤 경우인지 알고 싶습니다.^^
감사합니다.
Forums:
tail -f 를 쓰지 않는다면 아무 문제가 없는게 확실한 상황인가요??
혹시 서버 시간이 현재 시간과 맞지 않을 수도!!! 이건 아니겠죠 ;)
---------------------------------------------
git init
git add .
git commit -am "project init"
---------------------------------------------
---------------------------------------------
git init
git add .
git commit -am "project init"
---------------------------------------------
답변 감사합니다.
안녕 하세요.
답변 감사드립니다.
현재 개발자들한테 접수된 문제는 "tail -f" 기능이 주로 이용되는 경우라서
해당 문제 외에는 따로 접수된 문제는 없었습니다.
관련 기능이 안되는 경우 개발자들이 폴더를 보면 생성되어야 할 파일이
생성된 파일이 없어서 tail -f도 안되는 것이고
특정 순간 생성되지 않았던 파일들이 생성되어 있다는것 같더군요.
(파일은 존재하지만 파일에 변경 사항이 반영되지 않은 경우겠지요...)
개발자들은 항상 서버에 붙어서 테스트하기때문에 서버 시간과 현재 시간의 차이는 없을 것 같습니다.
어차피 현재 시간과 맞지 않아도 서버에서 특정 시간동안에는 파일이 생성되어 있지 않다가
일정시간 후에보면 생성되지 않았던 파일들이 생성되어 있으니까요.
(또는, 파일의 최근수정(?)시간이 과거로 되어 있다가 한참 후에 정상적으로 반영되는...)
문의가 들어오는건 웹에 접속하면 무조건 로그 파일이 생성되는데 아무리 로그를 쌓아도
tail -f를 실행 중인 화면에 반응이 없어서 관련 증상이 접수 된 경우라 서버 시간 문제는 아닌것 같습니다.
그렇다보니, 보통은 정상적으로 잘 동작하는데...
가끔씩 그런 현상이 발생하는것 같은데 어떤 식으로 모니터링 해야 할지 잘 모르겠네요^^;;;
개인적으로 상황을 봐서는 뭔가 메모리에 있는 내용이 물리 파일에 반영이 늦게 되는것 같은데..
뭔가 flush와 관련된 문제가 아닐까 싶지만...
아니면 tail -f로 다른 프로세스가 파일을 열고 있어서 정작 해당 로그 파일을 생성하는 주체인
웹 서버가 로그 파일에 파일을 쓰는 도중 권한(?)등의 문제가 발생했을지도 모르겠군요.
일련의 절차들을 어떻게 확인해야 할지 잘 몰라서..^^
관심 갖어 주셔서 감사합니다.
log buffer
대개 WAS들은 성능상 로그를 실시간으로 write 하지 않고
Log Buffer 를 두고 버퍼가 차면 로그를 쓰는 비동기 로깅방식을 씁니다.
JBoos 의 관련설정에서 Log Buffer 사이즈를 0 으로 하거나 sync mode 로 바꿔보세요
----------------------------------------
Nothing left after Nirvana.
----------------------------------------
Nothing left after Nirvana.
감사합니다.
ㅎㅎㅎ.. 최근 HDD들이 하나 둘 사망하더니만..
결국 컴퓨터가 사망해서 이제서야 들어오네요^^;;;
답변 감사합니다.
로그를 과하다 싶을 정도로 남기기때문에 웹페이지 1~2번정도 요청하면
엄청난 로그들이 실시간으로 출력되고 있어서 WAS의 버퍼 문제는 아닌것 같습니다.
로그가 실시간으로 잘 나오다가 특정 시점이후 부터는 아무리 웹페이지 요청을해도
아무런 로그도 안나오는 현상이거든요.
증상으로 보자면 일종의 파일 포인터를 잃어 버린 듯 한....
그래서 그런지 재 접속등을 하거나 하면 다시 보이곤 하는것 같습니다.
댓글 달기