늘 하던 대로 개발 Tomcat에 WAR 올리고 재기동했는데 WAR가 안 풀렸다. 결론부터 말하면 디스크가 꽉 찬 거였는데, 거기까지 가는 길이 어이없이 멀었다. 헤맨 순서 그대로 적어둔다(다음의 내가 또 이럴 게 뻔하니).
늘 하던 배포인데 WAR가 안 풀린다
webapps에 ROOT.war 올리고 재기동 → 원래라면 webapps/ROOT로 쫙 풀려야 하는데, 이번엔 파일이 정상적으로 안 풀렸다. 뭐지? 내가 WAR를 잘못 올렸나?
1차 의심 — 평소 배포 문제겠지
익숙한 것부터 다 봤다. 프로세스 제대로 죽었나, work/Catalina 캐시, temp, 권한, WAR 깨졌나.
(물론 지피티가 시킨대로 진행해서 뭔지 잘모름)
jar tf ROOT.war ; echo $? # 엔트리도 정상, 종료코드 0
WAR는 멀쩡했다. 그래서 더 헷갈리기 시작했다.
혹시 용량인가? …근데 df는 멀쩡한데?
로그가 쭉 찍히다 어느 순간 뚝 멈추는 느낌이 있었다. 예전에 비슷한 걸 겪은 기억이 어렴풋이 났다(그때 용량 문제였던 것 같은데). 그래서 df -h를 쳤는데 — 다른 마운트들은 여유로워 보였다. "어? 용량 멀쩡하네. 그럼 디스크 문제 아닌가?"
여기가 함정 1이었다. 다른 데가 비어 있어도 Tomcat이 실제 쓰는 경로가 꽉 차 있으면 끝이라는 걸 그땐 안 봤다.
로그에 "폴더를 못 만든다"는 흔적
다시 로그를 보니 이런 게 찍혀 있었다.
Unable to create the directory .../app/upload/...
오, 이 폴더가 문제인가? 이름이 꼬였나? WAR에 이상한 게 들어갔나? 마지막에 찍힌 경로가 너무 구체적이라 딱 범인처럼 보였다. 함정 2. WAR 안 경로를 jar tf | grep으로 뒤져도 멀쩡한데, 한번 의심이 붙으니 계속 그쪽만 팠다.
WAR를 다시 묶고, 또 안 되고.....
결국 로컬로 돌아가 WAR를 다시 묶었다. 로컬에선 잘 됨, jar tf 정상. 새 WAR 다시 올림 → 또 안 됨.
수동으로도 풀어봤다.
cd webapps && mkdir ROOT && cd ROOT && jar xf ../ROOT.war
이것도 중간까지 풀리다 멈췄다. "아 진짜 WAR 안에 특정 파일이 문제인가?" (이것도 함정이었다 — 디스크 full이면 수동 압축도 똑같이 중간에 멈춘다.)
어? 서버가 또 떠버렸다
수동으로 풀다 멈춘 것 같은데 다시 켜보니 서버가 도는 것처럼 보였다. 이게 사람을 더 헷갈리게 한다. "그럼 진짜 특정 파일만 문제였나?" 사실은 일부만 풀린 불완전한 상태로 어찌어찌 올라온 거였다. (와스도 노력중이였던거지)
급기야 "누가 서버 파일 건드렸나" 싶어 파일 날짜까지 째려봤다. 변동 없음. 머쓱.
웹도 멈추고 로그도 같이 멈춘다 → 아, 이거다
서버 떠서 웹 확인하려는데 웹이 멈췄다. 그리고 로그도 같이 멈췄다. 그 순간 처음의 그 느낌이 확실해졌다 — 애플리케이션 오류면 뭔가 더 찍혀야 하는데, 이건 파일 자체를 못 쓰는 느낌이다. 예전 디스크 풀 때랑 똑같다.
이번엔 실제 톰캣 경로 기준으로 봤다.
df -h /home/app/tomcat9
/dev/vsa4 50G 50G 0 100% /
/가 100%. 그제서야 전부 설명됐다 — WAR도, 폴더 생성도, 수동 압축도, 로그도 전부 "쓸 공간이 없어서" 실패한 거였다.
범인은 catalina.out
ls -lhS /home/app/tomcat9/logs | head
catalina.out 하나가 약 10GB. 개발서버라 디버그·에러 로그가 끝없이 쌓이며 / 50G를 다 잡아먹은 거였다.
조치
실행 중이라 삭제 말고 비운다(프로세스가 핸들 잡고 있으면 rm 해도 용량이 안 돌아온다고 한다).
: > /home/app/tomcat9/logs/catalina.out
# 또는 truncate -s 0 ...catalina.out
rm -rf /home/app/tomcat9/{webapps/ROOT,work/Catalina,temp/*}
다음엔, 삽질하기 전에 이것부터
df -h /home/app/tomcat9 # 전체 df 말고 톰캣 경로 기준!
df -i /home/app/tomcat9 # inode 고갈도 같은 증상
ls -lhS /home/app/tomcat9/logs | head
끝.
로그가 중간에 뚝 끊기면 애플리케이션이 멈춘 게 아니라 로그 파일에 더 못 쓰는 상태부터 의심하자. 마지막에 찍힌 폴더명 쫓지 말고, 그냥 df -h /톰캣경로부터 치자..(미래의 나에게).
'OS > LINUX' 카테고리의 다른 글
| 리눅스에 nginx 설치하기 (Ubuntu / CentOS) (0) | 2026.06.19 |
|---|---|
| 리눅스 해당 도메인이 열려있는지 확인하는 방법 (0) | 2024.11.08 |
| 리눅스 - configure, make, make install 개념 (0) | 2023.11.01 |
| su : Authentication failure 오류 해결방법 (0) | 2023.10.31 |
| [linux] 리눅스 tar 압축 및 압축 풀기 명령어 (0) | 2022.01.18 |