CentOS 7 "yum इंस्टॉल" ऑपरेशन के दौरान मेमोरी आवंटित नहीं कर सकता है


11

कोशिश करो yum install php56w-mcryptऔर प्रणाली ने मुझे यह त्रुटि दी

libmcrypt-2.5.8-13.el7.x86_64: [Errno 5] [Errno 12] Cannot allocate memory
php56w-mcrypt-5.6.5-1.w7.x86_64: [Errno 5] [Errno 12] Cannot allocate memory

मैंने एक चेक चलाया free -m

             total       used       free     shared    buffers     cached
Mem:           490        421         68          8          3         42
-/+ buffers/cache:        376        113
Swap:            0          0          0

top

  PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND
 9756 mysql     20   0  727588  81556      0 S  0.3 16.2   1:04.61 mysqld
11089 root      20   0       0      0      0 S  0.3  0.0   0:16.25 kworker/0:2
    1 root      20   0  129396   2020    576 S  0.0  0.4   0:05.88 systemd
    2 root      20   0       0      0      0 S  0.0  0.0   0:00.00 kthreadd
    3 root      20   0       0      0      0 S  0.0  0.0   0:00.16 ksoftirqd/0
    5 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 kworker/0:0H
    7 root      rt   0       0      0      0 S  0.0  0.0   0:00.00 migration/0
    8 root      20   0       0      0      0 S  0.0  0.0   0:00.00 rcu_bh
    9 root      20   0       0      0      0 S  0.0  0.0   0:00.00 rcuob/0
   10 root      20   0       0      0      0 S  0.0  0.0   0:01.82 rcu_sched
   11 root      20   0       0      0      0 R  0.0  0.0   0:02.10 rcuos/0
   12 root      rt   0       0      0      0 S  0.0  0.0   0:00.91 watchdog/0
   13 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 khelper
   14 root      20   0       0      0      0 S  0.0  0.0   0:00.00 kdevtmpfs
   15 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 netns
   16 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 writeback
   17 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 kintegrityd

सुनिश्चित नहीं है कि और कहाँ जाँच करनी है।

मैं DigitalOceanVPS का उपयोग कर रहा हूँ RAM 512MB, $ 5 / महीने की योजना।

जवाबों:


8

यह समस्या है कि सर्वर मशीन पर केवल 490MB RAM का लगता है और आपने 421MB का उपयोग किया है। केवल 68 एमबी को छोड़कर; यह किसी भी प्रणाली के साथ काम करने के लिए बहुत अधिक मेमोरी नहीं है।

उत्पादन से topपता चलता है कि MySQL (उर्फ mysqld:) अपराधी है।

अगर यह एक अस्थायी स्थिति है तो सबसे अच्छी बात आप MySQL को इस तरह रोक सकते हैं:

sudo service mysqld stop

तब MySQL बंद yum installहोने के साथ, आप अपेक्षित रूप से चला सकते हैं ।

लेकिन एक अन्य समाधान "MySQL ट्यूनिंग प्राइमर" जैसी स्क्रिप्ट का उपयोग करना होगा जो MySQL के उपयोग और कॉन्फ़िगरेशन का मूल्यांकन करने और तदनुसार समायोजित करने में मदद करेगा। इसका कारण यह है कि बॉक्स से बाहर सादे वेनिला MySQL एक मेमोरी हॉग होगा। लेकिन "MySQL ट्यूनिंग प्राइमर" आपके इंस्टॉल का आकलन करने में मदद करेगा और आपको बताएगा कि आप क्या कर सकते हैं। स्मृति की आवश्यकताओं को कम करना शामिल है ताकि सेटअप आपके सीमित संसाधनों से खुश हो सके। एकमात्र कैच MySQL को "MySQL ट्यूनिंग प्राइमर" परिणामों के लिए सक्रिय रूप से कम से कम 48 घंटों के लिए सीधे चलने की आवश्यकता है, जिसके परिणामस्वरूप कुछ भी हो सकता है। पिछले कि, इस स्क्रिप्ट के साथ MySQL ट्यूनिंग प्रदर्शन आपके LAMP सेटअप को ठीक करने का एक शानदार तरीका है।

इसके अतिरिक्त, जब से आप अपाचे चला रहे हैं, आप शायद अपाचे (उर्फ httpd) के लिए रैम की आवश्यकताओं को कम कर सकते हैं ताकि आप इस तरह से अधिक रैम मुक्त कर सकें। यह अपाचे के एक बुनियादी विकास के माहौल के लिए ट्वीक्स का एक काफी सामान्य सेट है, लेकिन आपको मदद करनी चाहिए। सबसे पहले अपने अपाचे कॉन्फिगर को अपने पसंदीदा कमांड लाइन एडिटर के माध्यम से इस तरह खोलें; मैं पसंद करता हूं nanoलेकिन कोई भी टेक्स्ट एडिटर अच्छा है:

sudo nano /etc/httpd/conf/httpd.conf 

अब उस पंक्ति को खोजें, जो कहती है Timeoutऔर इसे "120" में बदलें; दो मिनट एक उचित टाइमआउट विंडो है:

Timeout 120

इसी तरह खोजें MaxKeepAliveRequestsऔर उसे "24" में बदलें; "जीवित रखें" कनेक्शन अच्छे हैं, लेकिन उन्हें अपने सेटअप पर हावी न होने दें:

MaxKeepAliveRequests 24

और खोजें KeepAliveTimeoutऔर सेट करें कि "2"; यह इस बात पर निर्भर करना चाहिए कि आपकी साइट का एक पृष्ठ कितनी तेजी से लोड होता है और 2 सेकंड एक अच्छा औसत है:

KeepAliveTimeout 2

अब XML विन्यास निर्देश सेट के रूप में देखें <IfModule mpm_prefork_module>:

<IfModule mpm_prefork_module>
  StartServers           8
  MinSpareServers       16
  MaxSpareServers       32
  ServerLimit           40
  MaxClients            40
  MaxRequestsPerChild 2000
</IfModule>

इस की कुंजी ServerLimitऔर है MaxClients। डिफ़ॉल्ट रूप से अपाचे की सेटिंग काफी अधिक है; 255 के लिए MaxClientsमुझे विश्वास है। लेकिन वास्तविकता यह है कि एक उच्च ट्रैफिक साइट पर केवल 70-80 कनेक्शन प्रति सेकंड मिलेंगे ... और फिर मर जाएंगे ... मतलब अपाचे कनेक्शन स्टेटलेस हैं इसलिए बेंचमार्क प्रति सेकंड कनेक्शन है। तो एक विकास या छोटे पैमाने पर सर्वर के लिए, "40" एक अच्छी संख्या है।

अब उन प्रमुख समायोजन के साथ, अपाचे को इस तरह से पुनः आरंभ करें:

sudo service httpd restart

MySQL और Apache को समायोजित करने से डिफ़ॉल्ट / डिब्बाबंद मानों की तुलना में अधिक उचित सेटिंग्स होती हैं जो आपके सर्वर पर संसाधनों को मुक्त कर सकती हैं और सब कुछ अधिक सुचारू रूप से चलाती हैं।


17

आप स्वैप फ़ाइल बना सकते हैं:

fallocate -l 512M /swapfile
chmod 600 /swapfile
mkswap /swapfile
swapon /swapfile

यह स्वैप फाइल बनाएगा और आप एप्लिकेशन इंस्टॉल कर पाएंगे। स्वैप फ़ाइल निकालने के लिए:

swapoff -a
rm -f /swapfile

देख आर्क विकि जानकारी के लिए।


1
अछा सुझाव। किसी भी कारण से, कुछ डिस्क स्थान खोने के अलावा, स्वैप बंद करने के लिए?
छापे ३३

स्वैप सेटिंग्स पर निर्भर करता है कि कोई सिस्टम इसे 50% मेमोरी लोड या इसके उपयोग पर शुरू कर सकता है। यदि आपका सिस्टम चल रहा है, तो कहने दें, 512MB लेकिन ज्यादातर समय यह ~ 400MB का उपयोग कर रहा है तो यह स्वैप के बिना पूरी तरह से ठीक काम करेगा, लेकिन इसके साथ, यह 150MB को आगे और पीछे स्वैप करने की कोशिश को धीमा कर सकता है। लेकिन मैं उस एक पर गलत हो सकता हूं।
pbogut

sudoआदेशों के लिए उपयोग करना न भूलें
रैप्टर

1
फैलोकेट धोखा दे सकता है और काम नहीं कर सकता ... उपयोगsudo dd if=/dev/zero of=/swapfile count=512 bs=1MiB
रे फॉस
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.