Я зараз запускаю мікроакумулятор 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
Заміна повинна відбуватися на накопичувальному (ефемерному) диску, а не на пристрої EBS. Заміна призведе до великої кількості IO і збільшить витрати на EBS. EBS також повільніше, ніж у магазині інстанцій, і магазин екземплярів стає безкоштовним із деякими типами інстанцій EC2 .
Зазвичай він встановлюється в / mnt, але якщо не працює
sudo mount /dev/xvda2 /mnt
Щоб потім створити файл swap на цьому пристрої, виконайте наступне для swapfile 4 Гб
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
нарешті, увімкніть своп
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
Загальний обмін: 1048572 кБ
Зміна безкоштовно: 1048572 кБ
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 Гб за допомогою цих команд:
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
), які не ефемерне або екземпляр для зберігання доступні для вас. Тож вам потрібно просто створити свій своп, в EBS
якому залежно від випадку використання може бути, а може і не бути гарною ідеєю. В іншому випадку дотримуйтесь відповіді @David та створіть своп на ефемерному сховищі, щоб уникнути оплати витрат 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 - це блочний розмір, а кількість посилається на розмір у МБ або ГБ
ми можемо використовувати навпаки
Після створення змініть дозвіл на файл:
#chmod 600 /swapfile
Тоді робимоwawa файл:
#mkswap /swapfile
Потім увімкніть файл swap за допомогою команди swapon:
#swapon /swapfile
З вільною командою перевірте, чи включена підміна:
#free -h
#swapon -s
Використовуючи відповідь про зберігання екземплярів Девіда, спочатку працював у мене (на m5d.2xlarge), однак, після зупинки екземпляра EC2 та його ввімкнення я не зміг знову ввійти в екземпляр.
Журнали екземпляра повідомляли: "Ви знаходитесь в аварійному режимі. Після входу введіть" journalctl -xb ", щоб переглянути системні журнали," перезавантажити systemctl ", щоб перезавантажити," systemctl за замовчуванням "або" Вийти "для завантаження в режим за замовчуванням. Натисніть 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/
Більшість дистрибутивів упаковані.
На EC2 ви можете змінити "swappath" на / mnt або диск з високим іопсом.
Ви можете використовувати наступний сценарій, щоб додати своп в 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
Повний підручник ви можете відвідати: