ฉันกำลังใช้งานอินสแตนซ์ขนาดเล็ก ec2 และฉันพบว่าอินสแตนซ์นั้นมีหน่วยความจำไม่เพียงพอในบางครั้ง
นอกเหนือจากการใช้อินสแตนซ์ที่ใหญ่กว่าจะมีอะไรอีกบ้างที่สามารถทำได้
ฉันกำลังใช้งานอินสแตนซ์ขนาดเล็ก ec2 และฉันพบว่าอินสแตนซ์นั้นมีหน่วยความจำไม่เพียงพอในบางครั้ง
นอกเหนือจากการใช้อินสแตนซ์ที่ใหญ่กว่าจะมีอะไรอีกบ้างที่สามารถทำได้
คำตอบ:
การแก้ไขสำหรับปัญหานี้คือการเพิ่มพื้นที่swap
(เช่นpaging
) ให้กับอินสแตนซ์
เพจจิ้งทำงานโดยการสร้างพื้นที่บนฮาร์ดไดรฟ์ของคุณและใช้เพื่อเพิ่มหน่วยความจำหน่วยความจำนี้จะช้ากว่าหน่วยความจำปกติมาก แต่ก็มีอีกมาก
หากต้องการเพิ่มพื้นที่พิเศษให้กับอินสแตนซ์ของคุณให้พิมพ์:
sudo /bin/dd if=/dev/zero of=/var/swap.1 bs=1M count=1024
sudo /sbin/mkswap /var/swap.1
sudo chmod 600 /var/swap.1
sudo /sbin/swapon /var/swap.1
หากคุณต้องการมากกว่า 1024 ให้เปลี่ยนเป็นสิ่งที่สูงกว่า
หากต้องการเปิดใช้งานโดยค่าเริ่มต้นหลังจากรีบูตให้เพิ่มบรรทัดนี้ใน / etc / fstab:
/var/swap.1 swap swap defaults 0 0
if
หมายถึง 'ไฟล์อินพุต' of
หมายถึง 'ไฟล์เอาต์พุต' bs
หมายถึง 'ขนาดบล็อก' และcount
เป็นจำนวนบล็อกที่คุณต้องการจัดสรร…คุณสามารถอ่านman
หน้าคำสั่งเพื่อรับข้อมูลเพิ่มเติม: linux.die.net/man/1/ วันที่
$> free -m
การสลับควรเกิดขึ้นบนดิสก์ Instance Storage (ephemeral) ไม่ใช่อุปกรณ์ EBS การแลกเปลี่ยนจะทำให้ IO จำนวนมากและจะเพิ่มค่าใช้จ่ายใน EBS EBS ยังช้ากว่าอินสแตนซ์ Store และอินสแตนซ์ร้านมาฟรีกับบางประเภทของอินสแตนซ์ EC2
โดยปกติจะติดตั้งที่ / mnt แต่หากไม่ได้ทำงาน
sudo mount /dev/xvda2 /mnt
หากต้องการสร้างไฟล์ swap บนอุปกรณ์นี้ให้ทำสิ่งต่อไปนี้สำหรับไฟล์ swap 4GB
sudo dd if=/dev/zero of=/mnt/swapfile bs=1M count=4096
ตรวจสอบให้แน่ใจว่าไม่มีผู้ใช้รายอื่นสามารถดูไฟล์สลับได้
sudo chown root:root /mnt/swapfile
sudo chmod 600 /mnt/swapfile
สร้างและตั้งค่าสถานะเป็นการแลกเปลี่ยน
sudo mkswap /mnt/swapfile
sudo swapon /mnt/swapfile
เพิ่ม / ตรวจสอบให้แน่ใจว่าสิ่งต่อไปนี้อยู่ใน / etc / fstab ของคุณ
/dev/xvda2 /mnt auto defaults,nobootwait,comment=cloudconfig 0 2
/mnt/swapfile swap swap defaults 0 0
เปิดใช้งาน swap ในที่สุด
sudo swapon -a
หลังจากใช้ขั้นตอนที่กล่าวถึงโดย ajtrichards คุณสามารถตรวจสอบว่าอินสแตนซ์เทียร์ amazon ฟรีของคุณกำลังใช้ swap โดยใช้คำสั่งนี้หรือไม่
cat /proc/meminfo
ผลลัพธ์:
ubuntu@ip-172-31-24-245:/$ cat /proc/meminfo
MemTotal: 604340 kB
MemFree: 8524 kB
Buffers: 3380 kB
Cached: 398316 kB
SwapCached: 0 kB
Active: 165476 kB
Inactive: 384556 kB
Active(anon): 141344 kB
Inactive(anon): 7248 kB
Active(file): 24132 kB
Inactive(file): 377308 kB
Unevictable: 0 kB
Mlocked: 0 kB
SwapTotal: 1048572 kB
SwapFree: 1048572 kB
Dirty: 0 kB
Writeback: 0 kB
AnonPages: 148368 kB
Mapped: 14304 kB
Shmem: 256 kB
Slab: 26392 kB
SReclaimable: 18648 kB
SUnreclaim: 7744 kB
KernelStack: 736 kB
PageTables: 5060 kB
NFS_Unstable: 0 kB
Bounce: 0 kB
WritebackTmp: 0 kB
CommitLimit: 1350740 kB
Committed_AS: 623908 kB
VmallocTotal: 34359738367 kB
VmallocUsed: 7420 kB
VmallocChunk: 34359728748 kB
HardwareCorrupted: 0 kB
AnonHugePages: 0 kB
HugePages_Total: 0
HugePages_Free: 0
HugePages_Rsvd: 0
HugePages_Surp: 0
Hugepagesize: 2048 kB
DirectMap4k: 637952 kB
DirectMap2M: 0 kB
คุณสามารถเพิ่มการแลกเปลี่ยน 1 GB ในอินสแตนซ์ของคุณด้วยคำสั่งเหล่านี้:
sudo dd if=/dev/zero of=/swapfile bs=1M count=1024
sudo mkswap /swapfile
sudo swapon /swapfile
หากต้องการเปิดใช้งานเป็นค่าเริ่มต้นหลังจากรีบูตให้เพิ่มบรรทัดนี้ใน/etc/fstab
:
/swapfile swap swap defaults 0 0
/swapfile
มันจะสร้างการแลกเปลี่ยนในระบบแฟ้มรากตั้งแต่เส้นทางเป็น /mnt/blah/swapfile
แต่คุณยังสามารถติดตั้งระบบแฟ้มอื่นและสร้างแฟ้มสลับมีเช่น
ถ้าคุณอยู่ในt2
อินสแตนซ์ ( t2.micro
, t2.medium
, t2.small
) ไม่มีจีรังหรือตัวอย่างเช่นการจัดเก็บข้อมูลที่มีให้คุณ ดังนั้นคุณต้องสร้าง swap ของคุณEBS
ซึ่งขึ้นอยู่กับกรณีการใช้งานของคุณหรืออาจจะไม่ใช่ความคิดที่ดี มิฉะนั้นทำตามคำตอบของ @David และสร้าง swap ของคุณบนที่เก็บชั่วคราวเพื่อหลีกเลี่ยงการจ่ายค่าใช้จ่าย EBS
ข้อมูลเพิ่มเติม: http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/InstanceStorage.htmlมีตารางที่แสดงจำนวนที่เก็บข้อมูลชั่วคราวที่คุณได้รับสำหรับอินสแตนซ์แต่ละประเภท
For example, if you provision a volume with 1000 IOPS, and keep this volume for 15 days in a 30 day month, then in a Region that charges $0.10 per provisioned IOPS-month, you would be charged $50 for the IOPS that you provision ($0.10 per provisioned IOPS-month * 1000 IOPS provisioned * 15 days/30). You will be charged for the IOPS provisioned on a volume even when the volume is detached from an instance.
ผมได้ตรวจสอบการเชื่อมโยงของคุณและพบนี้ ซึ่งดูเหมือนว่า AWS จะเรียกเก็บเงินสำหรับการดำเนินการอ่านและเขียน
คุณสามารถสร้างพื้นที่สว็อปได้ตามขั้นตอนต่อไปนี้ที่นี่เรากำลังสร้างสวิตที่ /home/
dd if=/dev/zero of=/home/swapfile1 bs=1024 count=8388608
ที่นี่นับเป็นกิโลไบต์ของพื้นที่สว็อป
mkswap /home/swapfile1
vi /etc/fstab
ทำรายการ:
/home/swapfile1 swap swap defaults 0 0
วิ่ง:
swapon -a
เราสามารถเพิ่มพื้นที่สว็อปในเซิร์ฟเวอร์ใดก็ได้
สร้างไฟล์โดยใช้คำสั่ง dd
#dd if=/dev/zero of=/swapfile bs=1M count=2048
or
#dd if=/dev/zero of=/swapfile bs=1024M count=2
bs เป็นบล็อคและการนับหมายถึงขนาดเป็น MB หรือ GB
เราสามารถใช้ในทางกลับกัน
หลังจากการสร้างเปลี่ยนการอนุญาตของไฟล์:
#chmod 600 /swapfile
จากนั้นทำให้ไฟล์ wap:
#mkswap /swapfile
จากนั้นเปิดใช้งานไฟล์สลับด้วยคำสั่ง swapon:
#swapon /swapfile
ตรวจสอบด้วยคำสั่งฟรีว่าจะเปิดใช้งานการสลับหรือไม่:
#free -h
#swapon -s
การใช้คำตอบของ David Instance Storage ในตอนแรกทำงานได้สำหรับฉัน (บน m5d.2xlarge) แต่หลังจากหยุดอินสแตนซ์ EC2 และเปิดใช้งานอีกครั้งฉันไม่สามารถ ssh กลับไปใช้อินสแตนซ์อีกครั้งได้
รายงานบันทึกอินสแตนซ์: "คุณอยู่ในโหมดฉุกเฉินหลังจากเข้าสู่ระบบพิมพ์" journalctl -xb "เพื่อดูบันทึกระบบ" systemctl reboot "เพื่อรีบูต" systemctl default "หรือ" exit "เพื่อบูตเข้าสู่โหมดเริ่มต้นกด Enter สำหรับการบำรุงรักษา "
ฉันทำตามคำแนะนำ AWS ในลิงค์นี้และทุกอย่างทำงานได้อย่างสมบูรณ์รวมถึงหลังจากปิดอินสแตนซ์แล้วเปิดใหม่
https://aws.amazon.com/premiumsupport/knowledge-center/ec2-memory-swap-file/
sudo dd if=/dev/zero of=/swapfile bs=1G count=4
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
sudo swapon -s
sudo vi /etc/fstab
/swapfile swap swap defaults 0 0
ลองswapspace http://pqxx.org/development/swapspace/
มี distros ส่วนใหญ่บรรจุอยู่
บน EC2 คุณอาจต้องการเปลี่ยน "swappath" เป็น / mnt หรือดิสก์ระดับสูง
คุณสามารถใช้สคริปต์ต่อไปนี้เพื่อเพิ่ม swap บน Amazon Linux
https://github.com/chetankapoor/swap
ดาวน์โหลดสคริปต์โดยใช้ wget:
wget https://raw.githubusercontent.com/chetankapoor/swap/master/swap.sh -O swap.sh
จากนั้นรันสคริปต์ด้วยรูปแบบต่อไปนี้:
sh swap.sh 2G
สำหรับบทแนะนำที่สมบูรณ์คุณสามารถไปที่: