webpack 개발 서버로 인해 시스템이 정지됩니다.

webpack 개발 서버로 인해 시스템이 정지됩니다.

npm start내 반응 앱에서 사용하는 동안 오류가 발생합니다. 이와 같이
ENOSPC system limit for file watcher reached
npm 및 node 버전을 업데이트했지만 여전히 이 문제가 있습니다. 몇 가지 조사를 한 후 다양한 파일을 모니터링하는 inotify라는 것이 있으며 해당 파일 모니터링 제한을 늘려야 한다는 것을 알게 되었습니다.
echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf && sudo sysctl -p
파일 감시자 제한을 늘리기 위해 터미널에서 이 코드를 사용합니다 . 그 후에 나는 이 작업을 성공적으로 수행하여 npm start프로젝트를 localhost:3000에서 실행했지만 이로 인해 시스템 속도가 엄청나게 느려지고 때때로 작동이 중단되었습니다. 나는 이것이 파일 감시자 수가 증가했기 때문에 발생했다고 의심합니다. 그렇다면 이제 어떻게 해야 할까요?

답변1

통지하다시스템 이벤트의 변경 사항을 모니터링하고 변경 사항을 적용하면 이전보다 더 많은 파일을 모니터링하게 됩니다. 물론 모니터링은 일반적인 시스템 동작에 영향을 미칩니다.

실제로 값을 "조정"하려면 다음을 사용하여 현재 사용자 시계 수를 확인하세요.

lsof | grep inotify | wc -l

그런 다음 문제를 방지하려면 이 결과에 대해 약간 더 큰 값을 설정하십시오.fs.inotify.max_user_watches;보다 훨씬 작은 값524288이렇게 하면 리소스를 더 적게 소비하는 데 도움이 됩니다.

답변2

524288: (너무 큰) 매직 넘버

아마 여러분도 그렇겠지만, 저는 제안에 따라 max_user_watchesIDE가 이에 대해 불만을 제기한 후 기본값보다 높은 숫자로 값을 설정했습니다.
어디서 왔는지는 모르겠지만 524288, 몇 달 동안 사용해 본 결과, RAM이 많은 시스템에서도 문제가 발생한다는 점은 확실히 알 수 있습니다.

동일한 경고 메시지에 대한 답변을 찾는 사람은 다음을 수행하십시오.

한도를 변경하려면 524288 정도까지 곧바로 이동하지 말고 단계별로 수행하세요.

Webpack 개발 서버 최적화(문제를 숨기지 말고...수정하세요!)

개발 서버와 핫 리로딩의 목적은 개발 중에 업데이트될 가능성이 있는 파일을 살펴봄으로써 시간을 절약하는 것입니다.

그런데 폴더의 코드를 몇 번이나 변경하셨나요 node_modules? 아마 많지는 않을 것 같으니...


devServer: {

...
        watchOptions: {
            ignored: /node_modules/
        },

...

},


이 옵션을 사용하면 개발 서버는 핫 리로딩의 이점을 활용하기 위해 실제로 모니터링해야 하는 파일에만 집중합니다.

npm 종속성을 변경해야 하는 경우 서버를 중지하고 패키지를 설치/제거한 후 마지막으로 다시 시작하는 것이 좋습니다.

파일 감시자를 사용하여 프로세스를 검사하는 스크립트

하나 있다흥미로운 대본GitHub에서 모니터링되는 모든 파일의 프로세스와 해당 파일 번호를 인쇄합니다.

이것이 바로 생명안전이다!

intellij-current/plugins/JavaScriptLanguage/jsLanguageServicesIm

나는 이것이 개발 서버가 모니터링하는 ~10,000개의 파일 외에 또 다른 13,000개의 파일을 모니터링하는 Jetbrains의 Node.js 코드 지원 기능이라고 생각합니다.

최고의 설정을 찾는 행운을 빕니다! :-)

관련 정보