programing

Nodemon Error: "파일 감시자 수에 대한 시스템 제한에 도달했습니다.

i4 2023. 5. 21. 10:57
반응형

Nodemon Error: "파일 감시자 수에 대한 시스템 제한에 도달했습니다.

그래프QL을 배우고 있으며 사용 중입니다.prisma-bindingGraphQL 작업의 경우.나는 이것에 직면해 있습니다.nodemonNode.js 서버를 시작하는 동안 오류가 발생했으며 서버가 자동으로 생성한 스키마 파일의 경로를 제공합니다.graphql-cli이 오류는 모두 무엇에 관한 것입니까?

오류:

내부 감시 실패: ENOSPC:파일 감시기 수에 대한 시스템 제한에 도달했습니다. '/media/rehan-satar/Development/All projects/GrpahQl/graph-ql-course/graphql-prisma/src/generated 보기

업데이트됨(2023년 5월)
댓글에 몇 가지 팁이 있는데 이 질문을 업데이트하기 위해 가져왔습니다.이 문제가 발생하면 Linux 디스트리뷰터를 사용하고 있을 것이며 프로젝트가 시스템의 파일 감시기 제한에 도달하고 있을 것입니다.

다음을 실행하여 현재 알림 파일 감시 제한을 확인합니다.

$ cat /proc/sys/fs/inotify/max_user_watches

다음을 사용하여 일시적으로 새 한계치를 설정할 수 있습니다.

$ sudo sysctl fs.inotify.max_user_watches= 131070
$ sudo sysctl -p

또는 영구 제한을 설정할 수 있습니다.

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

131070 파일 제한을 설정합니다(댓글에서 @Dmitriy가 제안한 대로).이 제한이 시스템에 적용되지 않으면 이 수를 두 배로 늘릴 수 있습니다.

이 설명서에서는 자세한 기술 정보를 제공합니다.

구답
Linux를 사용하는 경우 프로젝트가 시스템의 파일 감시자 제한에 도달한 것입니다.

이 문제를 해결하려면 터미널에서 다음을 시도하십시오.

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

시스템 사용자에 대한 알림 감시자 제한을 늘려야 합니다.명령줄에서 다음을 사용하여 이 작업을 수행할 수 있습니다.

sudo sysctl -w fs.inotify.max_user_watches=100000

하지만 이는 재부팅할 때까지만 유지됩니다.영구적으로 설정하려면 다음 파일을 추가합니다./etc/sysctl.d/10-user-watches.conf다음 내용을 포함합니다.

fs.inotify.max_user_watches = 100000

위(또는 기타)를 변경한 후 의 모든 sysctl 구성 파일에서 설정을 다시 로드할 수 있습니다./etc와 함께sudo sysctl --system(이전 시스템에서는 사용해야 할 수 있음)sudo sysctl -p대신.)

Ubuntu 컴퓨터에서 Visual Studio Code로 작업할 때 가끔 이 문제가 발생합니다.

이 경우 다음 해결 방법이 도움이 됩니다.

감시자를 중지하고 Visual Studio Code를 닫고 감시자를 시작한 다음 Visual Studio Code를 다시 엽니다.

변경 사항을 테스트하기 위해 파라미터 값을 524288로 임시 설정했습니다.

sysctl -w fs.inotify.max_user_watches=524288

그런 다음 다음 검증을 진행합니다.

npm run serve

그리고 그 문제는 해결되었습니다.영구적으로 만들려면 "/etc/sysctl.conf" 파일에 줄을 추가한 다음 sysctl 서비스를 다시 시작해 보십시오.

cat /etc/sysctl.conf | tail -n 2
fs.inotify.max_user_watches=524288

sudo systemctl restart systemd-sysctl.service

저도 같은 문제가 있었습니다.하지만, 제 것은 웹팩에서 온 것이었습니다.고맙게도, 그들은 그들의 사이트에 훌륭한 솔루션을 가지고 있었습니다.

일부 시스템의 경우 많은 파일을 시청하면 CPU 또는 메모리 사용량이 많을 수 있습니다.정규식을 사용하여 node_modules와 같은 큰 폴더를 제외할 수 있습니다.

파일 webpack.config.js

module.exports = {
  watchOptions: {
    ignored: /node_modules/
  }
};

이는 Linux 커널의 inotify(inode notify) 문제이므로 다음 명령을 사용하여 해결할 수 있습니다.

  1. PC를 재부팅할 때까지 임시 솔루션의 경우 다음 명령을 사용합니다.

    sudo sysctl -w fs.inotify.max_user_watches=100000
    
  2. 영구적인 해결책:영구적으로 설정하려면 /etc/sysctl.d/10-user-watches.conf라는 파일을 다음 내용으로 추가합니다.

    fs.inotify.max_user_watches = 10000
    

변경한 후 /etc의 모든 sysctl 구성 파일에서 설정을 다시 로드합니다.sudo sysctl -p.

관찰자 수를 얼마나 늘려야 하는지 알기 어려울 수 있습니다.관찰자 수를 두 배로 늘릴 수 있는 유틸리티는 다음과 같습니다.

function get_inode_watcher_count() {
  find /proc/*/fd -user "$USER" -lname anon_inode:inotify -printf '%hinfo/%f\n' 2>/dev/null | 
  xargs cat | 
  grep -c '^inotify'
}

function set_inode_watchers() {
  sudo sysctl -w fs.inotify.max_user_watches="$1"
}

function double_inode_watchers() {
  watcher_count="$(get_inode_watcher_count)"
  set_inode_watchers "$((watcher_count * 2))"

  if test "$1" = "-p" || test "$1" = "--persist"; then
    echo "fs.inotify.max_user_watches = $((watcher_count * 2))" > /etc/sysctl.d/10-user-watches.conf
  fi
}

# Usage
double_inode_watchers
# to make the change persistent
double_inode_watchers --persist

Linux 서버에서 nodemon 명령을 수행하는 동안 Visual Studio Code(서버 SSH)가 열려 있습니다.그래서 Juri Sinitson의 답변을 바탕으로 Visual Studio Code를 닫고 nodemon 명령을 다시 실행합니다.그리고 그것은 동작한다.

의 nodemon 명령:

nodemon server.js npm 시을 ▁via▁n

여기에 제시된 대부분의 답변이 맞다고 생각하지만 systemctl 명령을 사용하여 서비스를 다시 시작하면 문제가 해결되었습니다.아래 명령을 확인하십시오.

sudo systemctl restart systemd-sysctl.service

다음과 같은 대답을 따라야 합니다.

cjs의

또는:

이삭 모우라의

버전의 Ubuntu 버우경을 하십시오.sudo sysctl --system이 설정을 새로 읽습니다.

하지만 저의 경우에는 이러한 설정을 이미 얼마 전에 수정했기 때문에 이러한 구성 파일에 대한 변경 사항이 적용되지 않았습니다.그리고 그것을 잊었습니다.그리고 충돌하는 구성 파일을 잘못된 위치에 배치했습니다.

에 의하면man sysctl.d은 이한설배수있다니습할치을에 할 수 ./etc/sysctl.d/*.conf,/run/sysctl.d/*.conf그리고./usr/lib/sysctl.d/*.conf.

제 경우에는 두 개의 파일이 있었습니다.

/etc/sysctl.d/10-user-watches.conf
/usr/lib/sysctl.d/30-tracker.conf     <<< Older file, with lower limit

이름 지정 규칙 때문에 이전 파일이 마지막으로 읽혀져 우선 순위가 지정되었습니다.

저는 파이썬과 venv 모듈과 함께 Vite를 사용하는데 큰 venv 폴더(10k 파일) 때문에 동일한 오류가 발생했습니다.
Vite 구성을 사용하면 파일 감시기에서 디렉터리를 무시할 수 있으므로 venv가 무시된 상태에서 오류가 사라졌습니다.

export default defineConfig({
  server: {
    watch: {
      ignored: ['**/venv/**'],
    }
  },
})  

초대 문서

리눅스에서, 저는 실제로 sudo와 함께 실행했습니다. sudo npm start

언급URL : https://stackoverflow.com/questions/53930305/nodemon-error-system-limit-for-number-of-file-watchers-reached

반응형