본문 바로가기
푸닥거리

Error: ENOSPC: System limit for number of file watchers reached

by ┌(  ̄∇ ̄)┘™ 2022. 5. 25.
728x90

리눅스(또는 WSL)에서 React·Vue·Angular 같은 프런트엔드 개발 서버를 돌리다 보면 이런 오류를 만나는 경우가 있습니다.

Error: ENOSPC: System limit for number of file watchers reached

원인

개발 서버(webpack, Vite 등)는 파일이 바뀌면 자동으로 다시 빌드하기 위해 소스 파일들을 감시(watch)합니다. 리눅스는 이 감시를 inotify라는 커널 기능으로 처리하는데, 한 사용자가 동시에 감시할 수 있는 파일 수(max_user_watches)에 상한이 있습니다. 프로젝트가 크거나 node_modules가 방대하면 이 한도를 초과해 오류가 납니다. (ENOSPC = "No Space" 이지만, 여기서는 디스크가 아니라 watcher 슬롯이 부족한 것)

해결 — 감시 한도 늘리기

커널 파라미터 fs.inotify.max_user_watches를 크게 올리고 즉시 적용합니다.

echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf && sudo sysctl -p

명령을 뜯어보면:

  • max_user_watches=524288 — 감시 한도를 약 52만 개로 상향(기본값은 보통 8192로 매우 작음)
  • | sudo tee -a /etc/sysctl.conf — 이 설정을 sysctl 설정 파일에 영구 추가(재부팅 후에도 유지)
  • && sudo sysctl -p — 재부팅 없이 즉시 적용

참고

  • 값 524288은 관례적인 권장치입니다. 메모리를 조금 더 쓰지만(감시 항목당 약 1KB), 개발 환경에서는 부담 없는 수준입니다.
  • 현재 값 확인: cat /proc/sys/fs/inotify/max_user_watches
  • 근본적으로는 감시 대상을 줄이는 것도 방법입니다 — 번들러 설정에서 node_modules나 빌드 산출물 폴더를 watch 제외하면 슬롯 소모가 줄어듭니다.
  • WSL2에서도 동일하게 적용되며, macOS는 inotify가 아니라 다른 메커니즘을 써서 이 오류가 나지 않습니다.
 

Error: ENOSPC: System limit for number of file watchers reached,

가끔 react 를 가지고 열심히 일을 하다보면 라는 에러를 내뱉는 경우를 볼 수 있다. 이럴 경우 라고 터미널에 입력해주면 아주 깔끔하게 처리된다.원인은 너무 열심히 일을 해서 시스템의 파일와

velog.io

728x90

댓글