В настоящее время я использую микроэкземпляр 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 также работает медленнее, чем Instance Store, а Instance Store поставляется бесплатно с некоторыми типами EC2 .
Обычно он монтируется в / mnt, но если не запускается
sudo mount /dev/xvda2 /mnt
Чтобы затем создать файл подкачки на этом устройстве, выполните следующие действия для файла подкачки объемом 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
SwapTotal: 1048572 кБ
SwapFree: 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 - это размер блока, а count относится к размеру в МБ или ГБ.
мы можем использовать наоборот
После создания измените разрешение файла:
#chmod 600 /swapfile
Затем делает своп файла:
#mkswap /swapfile
Затем включите файл подкачки с помощью команды swapon:
#swapon /swapfile
Проверьте с помощью команды free, включен ли swap:
#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/
У большинства дистрибутивов это есть.
На EC2 вы можете изменить «swappath» на / mnt или high-iops диск.
Вы можете использовать следующий скрипт для добавления подкачки в 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
Для полного урока вы можете посетить: