Node.js: ENOSPC त्रुटि क्या है और कैसे हल करें?


349

मुझे Node.js और सर्वर पर फाइलें अपलोड करने में समस्या है। सर्वर पर फाइलें अपलोड करने के लिए मैं इस प्लगइन का उपयोग करता हूं । सर्वर पर फ़ाइल अपलोड शुरू करते समय, Node.js प्रक्रिया दुर्घटनाग्रस्त हो गई और त्रुटि दिखाती है:

त्रुटि: ENOSPC।

सर्वर कोड नहीं चलता है।

$ df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/xvda1      7.9G  4.1G  3.5G  55% /
udev            288M  8.0K  288M   1% /dev
tmpfs           119M  168K  118M   1% /run
none            5.0M     0  5.0M   0% /run/lock
none            296M     0  296M   0% /run/shm
/dev/xvdf       9.9G  3.0G  6.5G  32% /vol
overflow        1.0M  1.0M     0 100% /tmp

1
"ENOSPC" का अर्थ है कि ड्राइव पर कोई स्थान नहीं है, तो आप अपनी फ़ाइल को कहाँ सहेजते हैं? या हो सकता है / tmp भरा है?
जैकब ए।

मैं / dev / xvda1 में फ़ाइलें सहेजता हूं। क्या मैं rm -rf / tmp / * बना सकता हूँ?
गिफो

1
हाँ, लेकिन मुझे नहीं लगता कि 1mb फ़ाइलअपलोड के लिए पर्याप्त है, इसलिए tmp-dir को दूसरे स्थान पर बदल दें जैसे कि ब्लू एंजेल से उत्तर में
याकूब ए।

3
आपके उपयोग के मामले की तरह लगता है अलग हो सकता है, लेकिन यहाँ एक बहुत बड़ा सवाल से इस समस्या का एक बड़ा समाधान है
आइजैक ग्रेगसन

किसी को भी इस ओर ठोकर खाने के लिए, इस उत्तर को भी देखें । ग्रंट और गल्प का उपयोग करके बहुत सारी घड़ियों का उपयोग किया जा सकता है, इसलिए यह उत्तर विवरण देता है कि इसे कैसे बढ़ाया जाए।
सियारिया

जवाबों:


1273

ENOSPC से बचने के लिए नीचे दिया गया कमांड चलाएँ:

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

आर्क लिनक्स के लिए इस लाइन को इसमें जोड़ें /etc/sysctl.d/99-sysctl.conf:

fs.inotify.max_user_watches=524288

फिर निष्पादित करें:

sysctl --system

यह रीबूट के दौरान भी बना रहेगा। तकनीकी विवरण स्रोत


25
यहाँ यह क्या करता है। github.com/guard/listen/wiki/…
Agus Syahputra

2
यह एक यादृच्छिक संख्या नहीं है। प्रत्येक प्रयोग की जाने वाली घड़ी में 540 बाइट्स (32-बिट सिस्टम), या 1 kB (डबल - 64-बिट पर) होती है। यह कर्नेल मेमोरी से बाहर आता है, जो कि असाध्य है। तो, मान लें कि आपने अधिकतम 524288 सेट किया है, और सभी का उपयोग किया गया था (असंभव), आप लगभग उपयोग कर रहे होंगे। 256MB / 512MB 32-बिट / 64-बिट कर्नेल मेमोरी।
मुरली कृष्ण

सैद्धांतिक रूप से कोई अधिकतम मूल्य नहीं है, जब तक आपके पास पर्याप्त रैम है। व्यावहारिक रूप से, 524288 को आधिकारिक तौर पर ऐप्स द्वारा अनुशंसित किया गया है, और लोग इसे 2 मिलियन तक मेमोरी उपयोग के साथ सेट कर रहे हैं।
मुरली कृष्ण

इससे मुझे इस समस्या को हल करने में मदद मिली है यह लिंक github.com/guard/listen/wiki/… के पास सभी विवरण हैं। धन्यवाद
amitsin6h

क्या किसी और को यह अजीब लगता है कि जो त्रुटि सामने आती है वह बस है ENOSPC? जैसे आउटपुट के बाद विवरण सही क्यों नहीं है ENOSPC - no space on drive? निश्चित रूप से, त्रुटि कोड समझ में आता है एक बार जब आप जानते हैं कि इसका क्या मतलब है ( E rror NO SP a C e), लेकिन क्यों न केवल उपयोगकर्ताओं को सामने जानकारी दी जाए?
शादिनिजा

73

ENOSPC इसका मतलब है कि ड्राइव पर कोई जगह नहीं है।

शायद /tmpभर गया है? आप npmसेटिंग से किसी भिन्न अस्थायी फ़ोल्डर का उपयोग करने के लिए कॉन्फ़िगर कर सकते हैं npm config set tmp /path/to/some/other/dir, या शायद फ़ोल्डर से सब कुछ हटा दें /tmp

स्रोत: एनपीएम 1.1.21 लिख नहीं सकते हैं, जीपीयूबी में एनपीएम के रेपो में ENOSPC

नोट मैंने अपनी समस्या को उस तरीके से हल किया है जो उपरोक्त स्रोत में वर्णित है। हालाँकि, नीचे मुरली कृष्ण का उत्तर देखें, जो अधिक व्यापक है।


मैंने / tmp फ़ोल्डर को साफ किया और npm अस्थायी फ़ोल्डर को बदल दिया, लेकिन एक ही समस्या है। npm config get tmpशो / वॉल्यूम / परिनियोजन / tmp
गिफो

क्या आप अपना पुट दोबारा दिखा सकते हैं? आउटपुट जो आपको परिवर्तन के बाद मिलता है
ब्लू

events.js:71 throw arguments[1]; // Unhandled 'error' event Error: ENOSPC, write
गिफो

1
क्या आपके पास त्रुटि श्रोता है? अगर एक लिखने से ज्यादा नहीं है और फिर परिणाम की जाँच करें
Blu

72
गलत, यह त्रुटि अक्सर डेवलपर कार्यक्षेत्रों में होती है जब फ़ाइलों को देख कर (grunt / gulp के माध्यम से)। यह एक यूनिक्स सीमा के साथ करना है कि एक प्रक्रिया कितनी फाइलें देख सकती है (देशी घड़ी)। अन्य उत्तर (गूंज fs.inotify.max_user_watches = 524288) उन मामलों में समाधान है।
कर्क राशि


20

एक सरल तरीका है जो मेरी समस्या को हल करता है:

npm cache clear

npm या इसके द्वारा नियंत्रित एक प्रक्रिया बहुत अधिक फ़ाइलों को देख रही है। बिल्ड नोड पर max_user_watches को अपडेट करना इसे हमेशा के लिए ठीक कर सकता है। डेबियन के लिए टर्मिनल पर निम्नलिखित रखें:

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

यदि आप यह जानना चाहते हैं कि कैसे इनऑटाइज़ वॉचर्स की मात्रा को बढ़ाएँ केवल लिंक पर क्लिक करें।


2
मुझे लगता है कि समस्या के साथ है forever,यह तय है जब मैं फ़ाइल बनाने .foreverignoreऔर फ़ोल्डर उन्हें जोड़नेnode_modules.
Vilintritenmert

7

मशीन को रिबूट करने से मेरे लिए समस्या हल हो गई। मैंने पहली बार पोंछने की कोशिश की /tmp/लेकिन नोड अभी भी शिकायत कर रहा था।


रिबूट करने के बाद समस्या वापस आ गई। करने से dedupeमदद मिली।
परन सान्याल

4

लिनक्स पर, यह फ़ाइल घड़ियों की संख्या पर एक सीमा होने की संभावना है।

विकास सर्वर हॉट- रीलोडिंग को लागू करने के लिए inotify का उपयोग करता है । Inotify API डेवलपमेंट सर्वर को फाइल देखने और सूचित करने की अनुमति देता है जब वे बदलते हैं।

डिफॉल्ट इनोटिफाई फ़ाइल वॉच सीमा वितरण से वितरण (फेडोरा पर 8192) तक भिन्न होती है। विकास सर्वर की आवश्यकताएं अक्सर इस सीमा से अधिक हो जाती हैं।

सबसे अच्छा तरीका यह है कि आप अस्थायी रूप से फ़ाइल वॉच की सीमा बढ़ाने की कोशिश करें, फिर यदि आप इससे खुश हैं तो स्थायी कॉन्फ़िगरेशन परिवर्तन कर सकते हैं। ध्यान दें, हालांकि, यह आपके पूरे सिस्टम के कॉन्फ़िगरेशन को बदलता है, न कि केवल नोड को।

अपनी वर्तमान सीमा देखने के लिए:

sysctl fs.inotify.max_user_watches

अस्थायी रूप से एक नई सीमा निर्धारित करने के लिए:

# this limit will revert after reset
sudo sysctl fs.inotify.max_user_watches=524288
sudo sysctl -p
# now restart the server and see if it works

एक स्थायी सीमा निर्धारित करने के लिए:

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

3

उबंटू 18.04 पर, मैंने एक चाल की कोशिश की जिसे मैं आयनिक / नोड द्वारा देखने वाली फ़ाइल को पुन: सक्रिय करने के लिए उपयोग किया था, और यह यहां भी काम करता है। यह उन लोगों के लिए उपयोगी हो सकता है, जिनके पास सिस्टम फ़ाइल तक पहुँच नहीं है।

CHOKIDAR_USEPOLLING=1 npm start

2

मैंने अपनी समस्या को सभी ट्रैकर-कंट्रोल प्रक्रियाओं को मार दिया (आप कोशिश कर सकते हैं कि आप जीडीएम का उपयोग करें, जाहिर है कि आपका मामला नहीं है यदि स्क्रिप्ट सर्वर पर चल रही है)

tracker-control -r

मेरा सेटअप: गनोम 3 के साथ आर्क


1
यह निर्दिष्ट करना भूल गए, हाँ, मैं एक ही स्थिति में था: आर्क + GNOME
डेनिस विटाली

2

यदि आपका /tmpएक linux फाइल सिस्टम पर माउंट को अतिप्रवाह (अक्सर 1MB पर आकार) के रूप में माउंट किया जाता है, तो इसकी संभावना है कि आप /tmpअपने स्वयं के विभाजन के रूप में निर्दिष्ट नहीं कर रहे हैं और आपका रूट फाइल सिस्टम भर गया है और /tmpएक कमबैक के रूप में रिमाउंट किया गया है।

स्थान खाली करने के बाद इसे ठीक करने के लिए, बस फ़ॉलबैक को अनमाउंट करें और इसे अपने मूल बिंदु पर रीमाउंट करें:

sudo umount overflow

2

अगर आप ember serverकमांड प्लीज rm -rf tmpडायरेक्टरी को चलाने की कोशिश के दौरान इस त्रुटि का सामना करते हैं । फिर चला ember s। इसने मेरी मदद की।


2

मुझे वही त्रुटि हो रही थी। जबकि मैं Reactjs ऐप चलाता हूं। मैं क्या कर रहा हूँ बस नोड_मॉडल फ़ोल्डर निकालें और फिर से नोड_मॉडल टाइप करें और स्थापित करें। यह त्रुटि को दूर करता है।


यह वास्तव में काम करता है, इसे नीचे क्यों रखा गया है - यह सवाल है। लेकिन यह समस्या को हल करता है, इसलिए आपको और क्या चाहिए?
एलेक्सनिकोव

1
पता नहीं, हो सकता है कि लोगों के पास मेरे साथ कुछ व्यक्तिगत समस्या हो। हाहा
ग्यायास मुबाशीर

1

मेरे लिए मैं उन फ़ाइलों की अधिकतम संख्या तक पहुँच गया जो एक उपयोगकर्ता स्वयं कर सकता है

अपने नंबरों की जाँच करें quota -sऔर कि फाइलों के नीचे की संख्या कोटा के बहुत पास नहीं है


1

यह बहुत अजीब लगता है, लेकिन हां, एक सिस्टम killall nodeमेरे लिए समस्या को रिबूट या हल करता है।


-15

मेरे मामले में, लिनक्स पर, सूदिंग ने समस्या को ठीक कर दिया।

उदाहरण:

sudo gulp dev

5
यह खतरनाक है! यह सफल होने की संभावना है क्योंकि डिस्क स्थान का एक निश्चित प्रतिशत रूट के लिए आरक्षित है, जो मूल समस्या को संबोधित नहीं करता है - बिना स्थान वाले उपयोगकर्ता (लक्ष्य स्थान पर) के रूप में कोई स्थान उपलब्ध नहीं है।
लियाम डॉसन

सुडो का उपयोग चीजों को बनाने के लिए एक शानदार तरीका है, लेकिन ज्यादातर लोग सब कुछ समझने की उपेक्षा करते हैं जो कि सूडो का उपयोग करते समय होता है। विशेष रूप से npm, और npm मॉड्यूल के साथ, sudo का उपयोग करने से उन चीजों का परिणाम हो सकता है जो रूट द्वारा किया जा रहा है, जो उपयोगकर्ता रूट द्वारा प्रदर्शन नहीं करना चाहता है, जैसे फ़ाइल निर्माण या संरक्षित पोर्ट का उपयोग। असल में, "उपयोग सुडो" सलाह इसके चेहरे पर (शायद ठोकर खाने के बाद और सूरज में एक पल के लिए घूरने के बाद) सपाट हो जाती है, जहां nvm / npm / नोड का संबंध है।
bschlueter
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.