Saya memulai beberapa server di EC2 dan mereka tidak memiliki swap.
Apakah saya melakukan sesuatu yang salah atau apakah mesin itu tidak memilikinya?
Saya memulai beberapa server di EC2 dan mereka tidak memiliki swap.
Apakah saya melakukan sesuatu yang salah atau apakah mesin itu tidak memilikinya?
Jawaban:
Anda benar, gambar EBS Ubuntu EC2 tidak datang dengan ruang swap yang dikonfigurasi ( setidaknya untuk 11,04 ). Gambar tipe "biasa" memang memiliki partisi swap, meskipun hanya 896 MB pada yang saya uji.
Jika beberapa proses meledak dan Anda tidak memiliki ruang swap, server Anda bisa berhenti merangkak untuk sementara waktu sebelum pembunuh OOM menendang, sedangkan dengan swap, itu hanya akan lambat. Untuk alasan itu, saya selalu suka memiliki ruang swap, bahkan dengan RAM yang cukup. Ini pilihanmu:
Buat volume EBS (2-4 kali ukuran RAM Anda), pasangkan ke instance Anda (saya suka memanggilnya / dev / xvdm untuk "memory") sudo mkswap /dev/xvdm
,, tambahkan ke fstab sudo swapon -a
,, dan Anda siap untuk menggunakannya . Saya telah melakukan ini sebelumnya dan berfungsi dengan baik, tetapi mungkin sedikit lebih lambat daripada menyimpan contoh karena berjalan melalui jaringan.
Atau Anda mungkin dapat mempartisi ulang disk Anda untuk menambahkan partisi swap, meskipun ini mungkin memerlukan pembuatan AMI baru. Saya belum dapat melakukan ini dalam menjalankan contoh, karena saya tidak dapat meng-unmount sistem file root, dan saya bahkan tidak memiliki akses ke perangkat disk (/ dev / xvda), hanya partisi (xvda1).
Atau Anda dapat membuat file swap. Ini adalah solusi pilihan saya saat ini.
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
Selesai. :) Saya tahu banyak orang merasa jijik menggunakan file, bukan partisi, tapi itu pasti berfungsi cukup baik sebagai ruang swap darurat.
Lokasi terbaik untuk swap IMHO adalah toko contoh. Mengapa? AWS tidak membebankan biaya untuk i / o di toko contoh. Selain itu, toko contoh lebih performan daripada EBS dalam banyak kasus. Pastikan Anda memiliki skrip yang membuat ulang file swap seandainya Anda menghentikan instance. Reboot baik-baik saja. Kenapa oh mengapa tidak ada di sana secara default?
Mari kita cari toko contoh.
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
Hore, 160.1GB gratis! Masukkan swap Anda di sana dan lupakan kelebihan $ 100 per server ketika swap berbasis EBS Anda dipenuhi oleh kesalahan. Pengalaman malang berbicara di sini.
Tampaknya dalam beberapa kasus Anda tidak melihat toko contoh.
Bergantung pada jenis instance, Anda harus terlebih dahulu melampirkan volume penyimpanan instance ke instance dengan menggunakan opsi pemetaan blok perangkat. Jika Anda tidak melakukan ini, Anda bahkan mungkin tidak melihat perangkat di bawah / dev (sesuai Cara menggunakan penyimpanan "Instance Store Volumes" di Amazon EC2? )
Catatan : Amazon telah mengubah kebijakan penetapan harga mereka , dan tidak membebankan biaya untuk permintaan I / O pada pertengahan 2016. Jawabannya disimpan di sini karena alasan historis, tetapi tidak ada implikasi biaya untuk menggunakan (atau tidak menggunakan) swap pada instance EC2 yang didukung EBS.
Ini dengan desain. Swap dimatikan secara default pada instance EC2 yang didukung EBS, untuk menghindari biaya tak terduga.
Jika Anda memiliki aplikasi yang haus akan memori yang tidak berfungsi (misalnya, dalam jumlah kecil atau kecil), ia dapat menghasilkan permintaan I / O dalam jumlah yang cukup besar pada volume EBS Anda. Amazon mengenakan biaya $ 0,10 per 1 juta permintaan I / O (lihat http://aws.amazon.com/pricing/ebs/ ) .
Dalam kondisi normal Anda tidak perlu khawatir; biasanya biaya permintaan I / O bahkan pada kasus yang lebih kecil beberapa dolar, jika demikian. Jadi, jika Anda tahu Anda memiliki instance berukuran tepat dan swap itu hanya akan jarang digunakan, silakan dan aktifkan. Tapi hati-hati dengan contoh kecil.
Jika Anda mengaktifkan swap, Anda mungkin ingin mengawasi Laporan Penggunaan. Secara opsional, Anda juga dapat mengatur Pemberitahuan Tagihan dengan membuka Panel Kontrol CloudWatch dan membuat Alarm baru untuk jumlah total tagihan. Dengan cara ini, Anda akan segera diberi tahu bahwa ada sesuatu yang aneh dengan kejadian Anda.
Periksa /etc/fstab
file, mereka mungkin sudah diatur tanpa swap di gambar yang Anda gunakan. Saya pikir beberapa orang berjalan tanpa swap untuk server karena mereka berharap tidak pernah menggunakan lebih dari total memori - bertukar membuat semuanya super lambat.
Namun, saya selalu paranoid tentang beberapa proses yang membesar dalam memori, jadi saya pikir akan lebih bijaksana jika Anda hanya mengatur swap drive dan membuat ulang gambar dari instance EC2 yang berjalan.
Sebuah solusi sederhana untuk berjalan swap
di EC2
gambar adalah untuk menjalankan swap
dikompresi dengan lz4
di ram
dengan zram-init
.
Solusi ini tidak mengambil ram
dari host
:
zswap
yang menyediakan cache RAM terkompresi di atas file swap / disk normal : wiki.archlinux.org/index.php/zswap . Lihat cnx-software.com/2018/05/14/… untuk lebih lanjut tentang zram.