मैंने EC2 पर एक युगल सर्वर शुरू किया और उनके पास स्वैप नहीं है।
क्या मैं कुछ गलत कर रहा हूं या यह है कि मशीनों के पास कोई भी नहीं है?
मैंने EC2 पर एक युगल सर्वर शुरू किया और उनके पास स्वैप नहीं है।
क्या मैं कुछ गलत कर रहा हूं या यह है कि मशीनों के पास कोई भी नहीं है?
जवाबों:
आप सही कह रहे हैं, उबंटू EC2 EBS चित्र स्वैप स्पेस कॉन्फ़िगर ( 11.04 के लिए कम से कम) के साथ नहीं आते हैं । "नियमित" उदाहरण-प्रकार की छवियों में एक स्वैप विभाजन होता है, यद्यपि मैंने जो परीक्षण किया था उस पर केवल 896 एमबी है।
यदि कुछ प्रक्रिया तेज हो जाती है और आपके पास स्वैप स्थान नहीं है, तो आपका सर्वर OOM किलर किक से पहले एक अच्छे समय के लिए क्रॉलिंग पड़ाव पर आ सकता है, जबकि स्वैप के साथ, यह केवल धीमा हो जाता है। उस कारण से, मैं हमेशा चारों ओर स्वैप स्थान रखना पसंद करता हूं, यहां तक कि पर्याप्त रैम के साथ भी। यहां आपके विकल्प हैं:
एक ईबीएस मात्रा (अपने रैम के आकार का 2-4 गुना) बनाएं, इसे अपने उदाहरण में संलग्न करें (मुझे इसे "मेमोरी के लिए देव / xvdm कहलाना पसंद है"), sudo mkswap /dev/xvdm
इसे fstab में जोड़ें sudo swapon -a
, और आप जाने के लिए अच्छे हैं । मैंने पहले भी ऐसा किया है और यह ठीक काम करता है, लेकिन यह संभवत: उदाहरण के लिए स्टोर की तुलना में थोड़ा धीमा है क्योंकि यह नेटवर्क पर चला जाता है।
या आप एक स्वैप विभाजन जोड़ने के लिए अपनी डिस्क को पुन: प्रारंभ करने में सक्षम हो सकते हैं, हालांकि इसके लिए एक नया एएमआई बनाने की आवश्यकता हो सकती है। मैं इसे एक रनिंग इंस्टेंस में नहीं कर पाया, क्योंकि मैं रूट फाइल सिस्टम को अनमाउंट नहीं कर सकता, और मुझे डिस्क डिवाइस (/ dev / xvda) तक भी एक्सेस नहीं है, केवल पार्टीशन (xvda1)।
या आप एक स्वैप फाइल बना सकते हैं। यह अभी मेरा पसंदीदा समाधान है।
sudo dd if=/dev/zero of=/var/swapfile bs=1M count=2048 &&
sudo chmod 600 /var/swapfile &&
sudo mkswap /var/swapfile &&
echo /var/swapfile none swap defaults 0 0 | sudo tee -a /etc/fstab &&
sudo swapon -a
किया हुआ। :) मुझे पता है कि बहुत से लोग विभाजन के बजाय फ़ाइलों का उपयोग करने के बारे में icky महसूस करते हैं, लेकिन यह निश्चित रूप से आपातकालीन स्वैप स्थान के रूप में अच्छी तरह से काम करता है।
स्वैप IMHO के लिए सबसे अच्छा स्थान उदाहरण की दुकान है। क्यों? उदाहरण-स्टोर पर AWS आपको i / o के लिए शुल्क नहीं देता है। इसके अलावा, ई-स्टोर कई मामलों में ईबीएस की तुलना में अधिक अच्छा है। बस सुनिश्चित करें कि आपके पास एक स्क्रिप्ट है जो स्वैप फ़ाइल को फिर से बनाता है यदि आप उदाहरण को रोकते हैं। रिबूट ठीक हैं। क्यों ओह, यह डिफ़ॉल्ट रूप से क्यों नहीं है?
आइए उदाहरण-स्टोर का पता लगाएं।
root@domU-**-**-**-**-**-**:/var/log# fdisk -l
[...]
Disk /dev/xvda2: 160.1 GB, 160104972288 bytes
255 heads, 63 sectors/track, 19464 cylinders, total 312705024 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000
Disk /dev/xvda2 doesn't contain a valid partition table
हुर्रे, 160.1GB मुफ्त में! अपनी स्वैप को वहां रखें और सर्वर पर 100 $ ओवरएज को भूल जाएं जब आपका ईबीएस-आधारित स्वैप गलती से झुंड में हो जाता है। यहां बात करने का दुर्भाग्यपूर्ण अनुभव।
जाहिरा तौर पर कुछ मामलों में आप इंस्टेंस-स्टोर नहीं देखते हैं।
उदाहरण प्रकार के आधार पर, आपको पहले ब्लॉक-डिवाइस-मैपिंग विकल्पों का उपयोग करके इंस्टेंस स्टोर वॉल्यूम को इंस्टेंस पर संलग्न करना होगा। यदि आप ऐसा नहीं करते हैं, तो आप भी डिवाइसों को / देव के तहत नहीं देख सकते हैं ( अमेज़न ईसी 2 में "इंस्टेंस स्टोर वॉल्यूम" स्टोरेज का उपयोग कैसे करें? )
नोट : अमेज़ॅन ने अपनी मूल्य नीति बदल दी है , और 2016 के मध्य के रूप में I / O अनुरोधों के लिए शुल्क नहीं लेता है। इसका जवाब यहां ऐतिहासिक कारणों से रखा गया है, लेकिन EC2 EBS- समर्थित इंस्टेंसेस पर स्वैप (या उपयोग न करने) के कोई भी निहितार्थ नहीं हैं।
यह डिजाइन द्वारा है। अप्रत्याशित लागतों से बचने के लिए EC2 EBS- समर्थित इंस्टेंस पर डिफ़ॉल्ट रूप से स्वैप बंद कर दिया जाता है।
यदि आपके पास एक मेमोरी-भूखा ऐप है जो दुष्ट (छोटे या छोटे उदाहरण पर) कहता है, तो यह आपके ईबीएस वॉल्यूम पर काफी मात्रा में I / O अनुरोध उत्पन्न कर सकता है। अमेज़ॅन $ 0.10 प्रति 1 मिलियन I / O अनुरोध ( http://aws.amazon.com/pricing/ebs/ देखें ) ।
सामान्य परिस्थितियों में आपको इसकी चिंता नहीं करनी चाहिए; आमतौर पर आई / ओ अनुरोधों की लागत कुछ डॉलर के छोटे उदाहरणों पर भी होती है, यदि ऐसा है। इसलिए यदि आप जानते हैं कि आपके पास एक उचित आकार है और उस स्वैप का उपयोग केवल बार-बार किया जाएगा, तो आगे बढ़ें और इसे सक्षम करें। लेकिन छोटे उदाहरणों से सावधान रहें।
यदि आप स्वैप सक्षम करते हैं, तो आप उपयोग रिपोर्ट पर नज़र रखना चाह सकते हैं। वैकल्पिक रूप से आप CloudWatch कंट्रोल पैनल पर जाकर और कुल बिल राशि के लिए एक नया अलार्म बनाकर बिलिंग अलर्ट सेट कर सकते हैं । इस तरह आपको तुरंत सूचित किया जाएगा कि कुछ अजीब है जो आपके उदाहरणों के साथ चल रहा है।
/etc/fstab
फ़ाइल की जाँच करें , वे संभवतः आपके द्वारा उपयोग की जा रही छवि में स्वैप के बिना सेट किए गए थे। मुझे लगता है कि कुछ लोग सर्वर के लिए स्वैप के बिना चलते हैं क्योंकि वे उम्मीद करते हैं कि वे कुल मेमोरी से अधिक का उपयोग कभी न करें - स्वैपिंग सब कुछ सुपर धीमा कर देती है।
हालाँकि, मैं हमेशा मेमोरी में बैलूनिंग करने वाली कुछ प्रक्रिया के बारे में पागल हूँ, इसलिए मुझे लगता है कि यह आपके लिए बस एक स्वैप ड्राइव स्थापित करने और चल रहे ec2 उदाहरण से एक छवि को फिर से बनाने के लिए विवेकपूर्ण होगा।
चलाने के लिए एक सरल समाधान swap
में EC2
छवियों चलाना है swap
साथ संकुचित lz4
में ram
साथ zram-init
।
इस समाधान से दूर नहीं ले ram
जाता है host
:
zswap
जो सामान्य स्वैप फ़ाइल / डिस्क के शीर्ष पर संपीड़ित रैम कैश प्रदान करता है: wiki.archlinux.org/index.php/zswap । Zam पर अधिक के लिए cnx-software.com/2018/05/14/… देखें ।