Nodemon त्रुटि: फ़ाइल देखने वालों की संख्या के लिए सिस्टम सीमा तक पहुँच गया


103

मैं ग्राफ़िकल ऑपरेशन के लिए सीख रहा हूं graphqlऔर उपयोग कर रहा हूं prisma-bindingnodemonजब मैं अपना नोड सर्वर शुरू कर रहा हूं तो मुझे इस त्रुटि का सामना करना पड़ रहा है और मुझे स्कीमा फ़ाइल का रास्ता दे रहा है जो कि ऑटो द्वारा उत्पन्न किया गया है graphql-cli। क्या कोई मुझे बता सकता है कि यह त्रुटि क्या है?

त्रुटि:

Internal watch failed: ENOSPC: System limit for number of file watchers reached, watch '/media/rehan-sattar/Development/All projects/GrpahQl/graph-ql-course/graphql-prisma/src/generated

यह linux ulimit त्रुटि है यहां देखें stackoverflow.com/questions/34588/…
Janith

इस की कोशिश की! फिर से वही त्रुटि हो रही है!
रेहान सत्तार

2
आप शायद बहुत सारी फाइलें देख रहे हैं। शायद यह nod_modules निर्देशिका भी शामिल है?
मिकेल

node_modules आवश्यक हैं क्योंकि सभी पैकेज हैं। मैंने अपने सर्वर के पोर्ट पर चल रही पिछली प्रक्रियाओं को मारने की कोशिश की है, यह मेरे लिए काम करती है लेकिन मुझे नहीं पता कि इसमें कितना समय लगेगा: D
रेहान सत्तार

जवाबों:


227

यदि आप लिनक्स का उपयोग कर रहे हैं, तो आपका प्रोजेक्ट आपके सिस्टम की फाइल वॉचर्स सीमा को मार रहा है

इसे ठीक करने के लिए, अपने टर्मिनल पर, कोशिश करें:

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

2
sysctl --systemहाल की प्रणालियों के लिए फिर से लोड करने के लिए उपयोग करें
YLJ

6
क्या कोई अन्य निहितार्थ है जो हमें पता होना चाहिए कि हम ऐसा कब करते हैं? मुझे पता था कि यह इस मुद्दे को हल करने में मदद करता है, मैंने खुद इसे आजमाया। लेकिन मैं थोड़ा उलझन में हूं कि इस फिक्स के क्या संभावित दुष्प्रभाव हो सकते हैं।
एल्डी

@ इस परिवर्तन के तकनीकी निहितार्थ के बारे में मैं इस विकी की जाँच करने की सलाह देता हूं: github.com/guard/listen/wiki/…
इसाक मौरा

यह भी npm plugins के साथ मुद्दों का एक बहुत काम किया। thx
बम्पस्टर

3
मैं इसे इतना बढ़ाने की सिफारिश नहीं करूंगा यदि आप सुनिश्चित नहीं हैं कि कितने उपयोग में हैं। निम्नलिखित के साथ प्रयोग में संख्या की जांच करेंfind /proc/*/fd -user "$USER" -lname anon_inode:inotify -printf '%hinfo/%f\n' 2>/dev/null | xargs cat | grep -c '^inotify'
निक बुल

23

अपने Ubuntu मशीन पर VSCode के साथ काम करने पर मुझे कभी-कभी यह समस्या आती है।

मेरे मामले में निम्नलिखित समाधान मदद करता है:

वॉचर को बंद करें, वीएसकोड बंद करें, वॉचर शुरू करें, फिर से वीएसकोड खोलें।


ये सही है! VSCode की वजह से। यह ऑटोसैव मोड होना चाहिए।
एनजी वीआई

20

आपको अपने सिस्टम के उपयोगकर्ताओं के लिए इनोटिफ़ाइड वॉचर्स सीमा को बढ़ाने की आवश्यकता है। आप इसे कमांड लाइन से कर सकते हैं:

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 -p


आपको बहुत - बहुत धन्यवाद! मेरे लिए काम किया !! लेकिन मुझे इस फाइल को कहां जोड़ना है?
रेहान सत्तार

@RehanSattar एक फ़ाइल बनाएं /etc/sysctl.d/10-user-watches.confऔर उसमें डालें fs.inotify.max_user_watches = 100000
cjs

इसे यहां पूर्णता के लिए रखा जा रहा है echo fs.inotify.max_user_watches=100000 | sudo tee /etc/sysctl.d/10-user-watches.conf && sudo sysctl -p
रेडहैटर

2
sysctl --systemहाल की प्रणालियों के लिए फिर से लोड करने के लिए उपयोग करें
YLJ

4

परिवर्तनों का परीक्षण करने के लिए, मैंने 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

अस्थायी रूप से परीक्षण के लिए यह संकेत अनमोल है। धन्यवाद
intmarinoreturn0

1

यह जानना कठिन हो सकता है कि देखने वालों की संख्या में कितनी वृद्धि हुई है। इसलिए, यहां देखने वालों की संख्या दोगुनी करने की उपयोगिता है:

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

0

मुझे वही समस्या थी, हालांकि मेरा वेबपैक से आ रहा था। शुक्र है कि वे अपनी साइट पर एक महान समाधान HD :

कुछ प्रणालियों के लिए, कई फ़ाइलों को देखने से बहुत अधिक सीपीयू या मेमोरी उपयोग हो सकता है। नियमित अभिव्यक्ति का उपयोग करके एक विशाल फ़ोल्डर जैसे नोड_मॉडल को बाहर करना संभव है:

webpack.config.js

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

-3

लिनक्स पर, मैं वास्तव में sudo के साथ चलता हूं। sudo npm start


5
यह अक्सर काम करेगा क्योंकि रूट में आमतौर पर नियमित उपयोगकर्ताओं की तुलना में बहुत अधिक इन-वॉच की सीमा होती है, लेकिन चीजों को रूट के रूप में चलाने के लिए बहुत बुरा विचार होता है जब उन्हें होने की आवश्यकता नहीं होती है। उपयोगकर्ता सीमा कैसे बदलें, इस प्रश्न के लिए मेरा उत्तर देखें ।
19
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.