사내에서 크롤링을 해야하는 일이 있었는데, 아래와 같은 에러가 발생했습니다.
에러: ENOSPC: no space left on device, mkdtemp '/tmp/puppeteer_dev_chrome_profile-lG14NO'
확인 결과 해당 에러는 현재 서버에 여유공간이 없을 때 발생하는 에러라고 판단했습니다.
크롤링 진행 시 결과 값을 log에 저장을 하는데, 해당 로그파일이 용량이 높아져서 발생한 에러로 추측됩니다.
서버에 접속해서 남아있는 용량을 확인해보니, 서버에 여유 공간이 없어서 발생한 에러였습니다.
리눅스에서 df
명령어를 통해 남아있는 용량을 확인할 수 있습니다.
df -k
KB 단위로 용량 표시df -m
MB 단위로 용량 표시df -h
용량에 따라 보기 편하게 표시df .
현재 디렉토리가 포함된 파티션의 용량의 표시위 사진과 같이 Available이 0이기 때문에 서버 내 용량 부족으로 해당 에러가 발생했습니다.
용량이 부족하기 때문에 발생한 에러이기 때문에, 2가지의 해결책이 있을꺼 같습니다.
이번에 발생했던 서버는 크롤링을 돌리고 있는 서버이며, 해당 기능을 계속 이용할지 확정이 안났기 때문에, 2번째 방법인 log를 정리하는 방법으로 문제를 해결했습니다.
PM2로 서비스를 돌리고 있었기 때문에, pm2 의 log를 확인했습니다.
로그의 용량을 확인하는 방법은 아래 명령어를 통해 확인이 가능합니다.
ls -alh
ls의 -h 옵션을 이용하면 KB/MB/GB 단위로 파일 사이즈 확인이 가능합니다.서버 내 가용 용량이 없기 때문에 발생한 에러이기 때문에, 간단하게 pm2의 log파일들의 정리하면 해결가능합니다.
pm2 flush
현재 사용중인 로그들을 삭제할 수 있습니다.하지만 이 경우 단기적인 해결방안입니다.
서비스가 지속적으로 돌아가게 된다면 로그가 쌓여 에러가 발생할 수 있습니다.
해당 문서에서 작성은 하지 않지만 아래의 pm2-logrotate
를 통해 로그 관리를 진행하는 방법도 있습니다.