ฉันเริ่มต้นเซิร์ฟเวอร์คู่ใน EC2 และพวกเขาไม่มี swap
ฉันกำลังทำอะไรผิดหรือเป็นเพราะเครื่องไม่มีอะไรเลยหรือเปล่า?
ฉันเริ่มต้นเซิร์ฟเวอร์คู่ใน EC2 และพวกเขาไม่มี swap
ฉันกำลังทำอะไรผิดหรือเป็นเพราะเครื่องไม่มีอะไรเลยหรือเปล่า?
คำตอบ:
คุณถูกต้องรูปภาพ ECBS ของ Ubuntu EC2 ไม่ได้มาพร้อมกับพื้นที่สว็อปที่กำหนดค่า ( อย่างน้อย11.04 ) รูปภาพประเภทอินสแตนซ์ "ปกติ" จะมีพาร์ติชั่นการสลับแม้ว่าจะมีเพียง 896 MB สำหรับภาพที่ฉันทดสอบ
หากกระบวนการบางอย่างเกิดขึ้นและคุณไม่มีพื้นที่สว็อปเซิร์ฟเวอร์ของคุณอาจหยุดการรวบรวมข้อมูลชั่วขณะหนึ่งก่อนที่ OOM killer จะเข้ามาในขณะที่การสว็อปก็จะช้าลง ด้วยเหตุนี้ฉันมักจะมีพื้นที่สว็อปอยู่เสมอแม้มี RAM เพียงพอ นี่คือตัวเลือกของคุณ:
สร้างโวลุ่ม EBS (ขนาด RAM ของคุณ 2-4 เท่า) แนบกับอินสแตนซ์ของคุณ (ฉันชอบเรียกมันว่า / dev / xvdm สำหรับ "memory") sudo mkswap /dev/xvdm
เพิ่มไปที่ fstab sudo swapon -a
และคุณทำได้ดี . ฉันเคยทำมาก่อนและใช้งานได้ดี แต่มันอาจจะช้ากว่าอินสแตนซ์สโตร์เล็กน้อยเพราะมันผ่านเครือข่าย
หรือคุณอาจแบ่งพาร์ติชันดิสก์ของคุณใหม่เพื่อเพิ่มพาร์ติชั่นสว็อปแม้ว่านี่อาจต้องสร้าง AMI ใหม่ ฉันไม่สามารถทำสิ่งนี้ได้ในอินสแตนซ์ที่กำลังทำงานอยู่เนื่องจากฉันไม่สามารถถอนติดตั้งระบบไฟล์รูทและฉันไม่สามารถเข้าถึงอุปกรณ์ดิสก์ได้ (/ 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
เสร็จสิ้น :) ฉันรู้ว่าผู้คนจำนวนมากรู้สึกอึดอัดใจกับการใช้ไฟล์แทนพาร์ติชัน แต่มันก็ใช้ได้ดีพอสำหรับพื้นที่สลับฉุกเฉิน
ตำแหน่งที่ดีที่สุดสำหรับการแลกเปลี่ยน IMHO คืออินสแตนซ์สโตร์ ทำไม? AWS ไม่ได้เรียกเก็บเงินจากคุณสำหรับ i / o บนอินสแตนซ์สโตร์ นอกจากนี้อินสแตนซ์สโตร์ยังมีประสิทธิภาพมากกว่า EBS ในหลายกรณี ตรวจสอบให้แน่ใจว่าคุณมีสคริปต์ที่สร้างไฟล์สลับใหม่ในกรณีที่คุณหยุดอินสแตนซ์ รีบูตได้ดี ทำไมโอ้ทำไมมันถึงไม่มีโดยปริยาย?
ลองหาอินสแตนซ์สโตร์
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
Hurray ขนาด 160.1GB ฟรี! ใส่การแลกเปลี่ยนของคุณลงไปที่นั่นและลืมค่าบำรุงเกิน 100 $ ต่อเซิร์ฟเวอร์เมื่อการแลกเปลี่ยนที่อิงกับ EBS ของคุณเต็มไปด้วยความผิดพลาด ประสบการณ์ที่โชคร้ายพูดคุยที่นี่
เห็นได้ชัดในบางกรณีคุณไม่เห็นอินสแตนซ์สโตร์
ขึ้นอยู่กับชนิดของอินสแตนซ์ก่อนอื่นคุณต้องแนบไดรฟ์ข้อมูลที่เก็บอินสแตนซ์กับอินสแตนซ์โดยใช้ตัวเลือกการแมปอุปกรณ์บล็อก หากคุณไม่ทำเช่นนี้คุณอาจไม่เห็นอุปกรณ์ภายใต้ / dev (ตามวิธีการใช้ที่เก็บข้อมูล "Instance Store Volumes" ใน Amazon EC2 )
หมายเหตุ : Amazon ได้เปลี่ยนแปลงนโยบายการกำหนดราคาและไม่เรียกเก็บเงินสำหรับคำขอ I / O ตั้งแต่กลางปี 2559 คำตอบจะถูกเก็บไว้ที่นี่ด้วยเหตุผลทางประวัติศาสตร์ แต่ไม่มีผลกระทบค่าใช้จ่ายของการแลกเปลี่ยน (หรือไม่ได้ใช้) ในอินสแตนซ์ที่สำรองไว้ของ EC2 EBS
นี่คือโดยการออกแบบ การสลับถูกปิดใช้งานตามค่าเริ่มต้นในอินสแตนซ์ที่สนับสนุนโดย EBS ของ EC2 เพื่อหลีกเลี่ยงค่าใช้จ่ายที่คาดเดาไม่ได้
หากคุณมีแอพที่ใช้หน่วยความจำหิวมาก (เช่นในตัวเล็กหรือตัวเล็ก) มันสามารถสร้างคำขอ I / O จำนวนมากบนไดรฟ์ EBS ของคุณได้ Amazon ค่าใช้จ่าย $ 0.10 ต่อ 1 ล้านคนร้องขอ I / O (ดูhttp://aws.amazon.com/pricing/ebs/ )
ภายใต้สภาวะปกติคุณไม่ควรกังวล โดยปกติค่าใช้จ่ายของคำขอ I / O แม้ในกรณีที่มีขนาดเล็กไม่กี่ดอลลาร์ถ้าเป็นเช่นนั้น ดังนั้นหากคุณรู้ว่าคุณมีอินสแตนซ์ที่มีขนาดที่เหมาะสมและการแลกเปลี่ยนนั้นจะถูกใช้เพียงไม่นานให้ไปข้างหน้าและเปิดใช้งาน แต่ระวังด้วยกรณีเล็ก ๆ
หากคุณเปิดใช้งานการสลับคุณอาจต้องจับตารายงานการใช้งาน นอกจากนี้คุณยังสามารถตั้งค่าการแจ้งเตือนการเรียกเก็บเงินโดยไปที่แผงควบคุม CloudWatchและสร้างการเตือนภัยใหม่สำหรับจำนวนเงินที่เรียกเก็บทั้งหมด วิธีนี้คุณจะได้รับการแจ้งเตือนทันทีเป็นสิ่งที่แปลกที่เกิดขึ้นกับอินสแตนซ์ของคุณ
ตรวจสอบ/etc/fstab
ไฟล์ซึ่งอาจถูกตั้งค่าโดยไม่มีการสลับในรูปภาพที่คุณใช้ ฉันคิดว่าบางคนทำงานโดยไม่มีการแลกเปลี่ยนสำหรับเซิร์ฟเวอร์เนื่องจากพวกเขาคาดหวังว่าจะไม่ใช้มากกว่าหน่วยความจำทั้งหมด - การสลับทำให้ทุกอย่างช้ามาก
อย่างไรก็ตามฉันมักจะหวาดระแวงเกี่ยวกับกระบวนการบางอย่างที่เกิดขึ้นในหน่วยความจำดังนั้นฉันคิดว่าคุณควรตั้งค่า swap drive และสร้างภาพจากอินสแตนซ์ ec2 ที่กำลังทำงานอยู่
วิธีง่ายๆในการทำงานswap
ในEC2
ภาพคือการใช้swap
การบีบอัดที่มีlz4
ในกับram
zram-init
วิธีแก้ปัญหานี้ไม่ได้นำram
ไปใช้กับhost
:
zswap
ซึ่งมีแคช RAM บีบอัดที่ด้านบนของปกติแลกเปลี่ยนไฟล์ / ดิสก์: wiki.archlinux.org/index.php/zswap ดูcnx-software.com/2018/05/14/…สำหรับข้อมูลเพิ่มเติมเกี่ยวกับ zram