Я запустил пару серверов на EC2, и у них нет свопа.
Я что-то не так делаю или машины просто не имеют?
Я запустил пару серверов на EC2, и у них нет свопа.
Я что-то не так делаю или машины просто не имеют?
Ответы:
Вы правы, образы Ebu Ubuntu EC2 не поставляются с настроенным пространством подкачки (по крайней мере, для 11.04 ). «Обычные» образы экземпляра имеют раздел подкачки, хотя на том, который я тестировал, только 896 МБ.
Если какой-то процесс взрывается и у вас нет места подкачки, ваш сервер может ненадолго остановиться, пока не включится убийца OOM, тогда как при перестановке он просто замедляется. По этой причине мне всегда нравится иметь место подкачки, даже с достаточным количеством оперативной памяти. Вот ваши варианты:
Создайте том EBS (в 2-4 раза превышающий объем вашей оперативной памяти), присоедините его к вашему экземпляру (мне нравится называть его / dev / xvdm для «памяти») 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 не взимает плату за ввод-вывод в магазине экземпляров. Кроме того, хранилище экземпляров во многих случаях более производительно, чем 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
Ура, 160.1GB бесплатно! Поместите туда свой своп и забудьте о 100-процентных перерасходах на сервер, когда ваш своп на основе EBS наполнился ошибкой. К сожалению, опыт общения здесь.
Видимо, в некоторых случаях вы не видите хранилище экземпляров.
В зависимости от типа экземпляра сначала необходимо подключить тома хранилища экземпляров к экземпляру с помощью параметров сопоставления блочных устройств. Если вы этого не сделаете, вы можете даже не увидеть устройства в каталоге / dev (согласно Как использовать хранилище «Instance Store Volumes» в Amazon EC2? )
Примечание : Amazon изменил свою ценовую политику и не взимает плату за запросы ввода-вывода с середины 2016 года. Ответ хранится здесь по историческим причинам, но нет никаких затратных последствий использования (или не использования) свопа на экземплярах, поддерживаемых EBS в EC2.
Это по замыслу. По умолчанию своп отключен в инстансах, поддерживаемых EBS EC2, чтобы избежать непредсказуемых затрат.
Если у вас есть приложение с нехваткой памяти, которое работает плохо (скажем, на маленьком или маленьком экземпляре), оно может генерировать довольно большое количество запросов ввода-вывода на томе EBS. Amazon взимает $ 0,10 за 1 миллион запросов ввода / вывода (см. 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 . См. Cnx-software.com/2018/05/14/… для получения дополнительной информации о Zram.