उबंटू सर्वर पर कोई भी कमांड रिटर्न "मेमोरी आवंटित नहीं कर सकता है"


16

मैं Ubuntu 14.04 का उपयोग कर रहा हूं। हाल ही में, जब मैं sudo विशेषाधिकारों के साथ अपने उपयोगकर्ता के साथ SSH के माध्यम से लॉगिन करता हूं, तो प्रत्येक कमांड मैं "मेमोरी आवंटित नहीं कर सकता" त्रुटि में परिणाम चलाता है। यहाँ कुछ मैंने अपने कंसोल पर आज़माए हैं

myuser@mymachine:~$ whoami
-bash: fork: Cannot allocate memory
myuser@mymachine:~$ uname -a
-bash: fork: Cannot allocate memory

यहां तक ​​कि अगर मैं कोशिश करता sudo reboot nowहूं कि मुझे उपरोक्त त्रुटि मिलती है, तो मुझे नहीं पता कि मैं अपने उदाहरण को अनलॉक करने के लिए और क्या प्रयास कर सकता हूं। मेजबान DigitalOcean है अगर वह मायने रखता है।

संपादित करें: यहां दिए गए उत्तर / सुझाव के अनुसार "मुफ्त" का आउटपुट है

myuser@mymachine:~$ free
-bash: fork: Cannot allocate memory

जवाबों:


12

समाधान

जैसा कि त्रुटि संदेशों में कहा गया है, आपकी मशीन मेमोरी से बाहर हो गई है। यह कई कारणों से हो सकता है, लेकिन मूल रूप से, कुछ आपकी स्मृति को खा रहा है और यहां तक ​​कि मूल आदेश के उपयोग के लिए कोई कसर नहीं छोड़ रहा है।

मेरा सुझाव है कि आप अपनी छोटी बूंद को रिबूट करें (बस अपने क्लाइंट कंट्रोल पैनल पर जाएं और "रिबूट" का चयन करें), sshफिर और चलाएं topया htop। स्मृति उपयोग पर नज़र रखें और देखें कि सभी मेमोरी किस प्रक्रिया का उपयोग कर रही है। वहाँ से, या तो प्रयास करें

  1. मारना / दोषपूर्ण कार्यक्रम को हटाना / प्रक्रिया

    चेतावनी : यदि प्रक्रिया एक आवश्यक प्रणाली प्रक्रिया है, तो कृपया अपना शोध करें! यदि कोई सिस्टम प्रक्रिया मेमोरी समस्याओं का कारण बन रही है, तो इसे न केवल मारें, इस पर शोध करें और इससे निपटने के विशिष्ट तरीकों के लिए।
  2. उस प्रोग्राम / प्रक्रिया के लिए कॉन्फ़िगरेशन बदलना ताकि वह आपकी सभी मेमोरी को न खाए।

समस्या को फिर से होने से रोकने के लिए सुझाव

  • कुछ अच्छा करने के लिए स्वैप मेमोरी को जोड़ना है , क्योंकि यह अधिक मेमोरी आवंटित करता है यदि आप बाहर चल रहे हैं।
  • जब भी आप प्रोग्राम इंस्टॉल करते हैं, तो सुनिश्चित करें कि आप उन्हें सही तरीके से कॉन्फ़िगर करते हैं ताकि वे अनपेक्षित तरीके से प्रदर्शन न करें (जैसे मेमोरी खाना खाएं)
  • प्रत्येक बार जब आप एक पैकेज जोड़ते हैं या मूल रूप से कुछ भी नया कॉन्फ़िगर किया जाता है, तो यह देखें htopया topदेखें कि आप वर्तमान कार्यक्रमों के साथ कितनी मेमोरी का उपयोग कर रहे हैं। यदि आप ध्यान दें कि आप इसका लगभग सभी उपयोग कर रहे हैं, तो अनावश्यक कार्यक्रमों / प्रक्रियाओं को हटाकर और हटाकर कुछ आज़माएं।
  • यदि ऐसा कुछ भी है जो ऑटो-स्टार्ट किया जा रहा है (सिस्टम प्रक्रियाओं के अलावा, निश्चित रूप से!) जिसे आप नहीं पहचानते हैं या ऑटो-स्टार्ट होना चाहते हैं, तो इसे हटा दें! लेकिन हमेशा अपना शोध इस बात पर करें कि इसे मारने / हटाने से पहले क्या प्रक्रिया होती है, क्योंकि यह बूटअप प्रक्रिया या सिस्टम फ़ंक्शंस आदि के लिए आवश्यक हो सकता है।

7

रिबूट किए बिना इस स्थिति से बाहर निकलने के लिए, आप OOM किलर को मैन्युअल रूप से निम्नानुसार ट्रिगर कर सकते हैं:

echo 1 > /proc/sys/kernel/sysrq
echo f > /proc/sysrq-trigger
echo 0 > /proc/sys/kernel/sysrq

संदर्भ


क्या आपके पास उन आदेशों का समर्थन करने वाला कोई दस्तावेज है? सिर्फ sudo sysctl -w vm.oom_kill_allocating_task=1या स्थायी रूप से/etc/sysctl.conf क्यों नहीं ।
पाब्लो बियांची

1
ऐसा नहीं लगता है कि इससे कोई फर्क पड़ेगा, अगर यह बाकी है तो सिस्टम वास्तविक OOM स्थिति से नहीं टकराता है क्योंकि कोई भी प्रक्रिया मेमोरी आवंटित करने की कोशिश नहीं कर रही है और कोई अतिरिक्त प्रक्रिया शुरू नहीं की जा सकती है। और अर्ध-असंबंधित लेकिन आप इस अवस्था में एक बार सुडोल या सिक्टक्टल का उपयोग नहीं कर पाएंगे।
ल्यूक एफ

इसने मेरे लिए काम किया। पता नहीं कैसे, परवाह नहीं है। मैं इसे चलाने sudo rebootसे पहले दौड़ भी नहीं पा रहा था । धन्यवाद!
बोल्डर_रुबी

0

स्वीकृत उत्तर को पूरा करने के लिए विचार करने के लिए एक अतिरिक्त बात है: आपका सिस्टम फ़ाइल हैंडल या सॉकेट बफ़र्स से बाहर चला सकता है और अभी भी एक ही त्रुटि देने के दौरान बहुत सारी मेमोरी है। यह विशेष रूप से सच है यदि साझा होस्टिंग ऐसी प्रकृति की सीमाएं लगाता है। OpenVZ सिस्टम पर, की सामग्री देखें

# बिल्ली / proc / user_beancounters

यह आपको सबसे सही कॉलम में पहला ओवररन देगा। यदि यह सच है, या तो एक बड़े होस्टिंग पैकेज पर जाएं या सबसे संभावित अपराधी को शिकार करें: mysql या mariadb डेटाबेस जो कि एक दोषपूर्ण PHP ऐप की उपस्थिति में हो सकता है, लीक फ़ाइल सैकड़ों प्रति सेकंड संभालती है।

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

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.