Obecnie korzystam z mikro instancji ec2 i okazało się, że w instancji czasami brakuje pamięci.
Co innego można zrobić, niż używając większego rozmiaru instancji?
Obecnie korzystam z mikro instancji ec2 i okazało się, że w instancji czasami brakuje pamięci.
Co innego można zrobić, niż używając większego rozmiaru instancji?
Odpowiedzi:
Rozwiązaniem tego problemu jest dodanie swap
(tj. paging
) Miejsca do instancji.
Stronicowanie polega na utworzeniu obszaru na dysku twardym i wykorzystaniu go jako dodatkowej pamięci. Pamięć ta jest znacznie wolniejsza niż zwykła pamięć, jednak dostępnych jest znacznie więcej.
Aby dodać tę dodatkową przestrzeń do instancji, wpisz:
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
Jeśli potrzebujesz więcej niż 1024, zmień to na coś wyższego.
Aby włączyć ją domyślnie po ponownym uruchomieniu, dodaj tę linię do / etc / fstab:
/var/swap.1 swap swap defaults 0 0
if
oznacza „plik wejściowy”, of
oznacza „plik wyjściowy”, bs
oznacza „rozmiar bloku” i count
jest liczbą bloków, które chcesz przydzielić… możesz przeczytać man
stronę polecenia, aby uzyskać więcej informacji: linux.die.net/man/1/ dd
$> free -m
Zamiana powinna odbywać się na dysku Instance Storage (efemerycznym), a nie na urządzeniu EBS. Zamiana spowoduje wiele IO i zwiększy koszty EBS. EBS działa również wolniej niż Sklep Instancji, a Sklep Instancji jest dostępny bezpłatnie z niektórymi typami Instancji EC2 .
Zwykle będzie montowany w / mnt, ale jeśli nie zostanie uruchomiony
sudo mount /dev/xvda2 /mnt
Aby następnie utworzyć plik wymiany na tym urządzeniu, wykonaj następujące czynności dla pliku wymiany 4 GB
sudo dd if=/dev/zero of=/mnt/swapfile bs=1M count=4096
Upewnij się, że żaden inny użytkownik nie może wyświetlić pliku wymiany
sudo chown root:root /mnt/swapfile
sudo chmod 600 /mnt/swapfile
Zrób i oflaguj jako swap
sudo mkswap /mnt/swapfile
sudo swapon /mnt/swapfile
Dodaj / Upewnij się, że w / etc / fstab znajdują się następujące elementy
/dev/xvda2 /mnt auto defaults,nobootwait,comment=cloudconfig 0 2
/mnt/swapfile swap swap defaults 0 0
wreszcie włącz zamianę
sudo swapon -a
Po zastosowaniu kroków wymienionych przez ajtrichards możesz sprawdzić, czy Twoja instancja amazonu w warstwie wolnej używa swap za pomocą tego polecenia
cat /proc/meminfo
wynik:
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
Swap Razem: 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
Możesz dodać swap 1 GB do instancji za pomocą następujących poleceń:
sudo dd if=/dev/zero of=/swapfile bs=1M count=1024
sudo mkswap /swapfile
sudo swapon /swapfile
Aby włączyć ją domyślnie po ponownym uruchomieniu, dodaj ten wiersz do /etc/fstab
:
/swapfile swap swap defaults 0 0
/swapfile
. Ale możesz również zamontować inny system plików i utworzyć tam plik wymiany, np /mnt/blah/swapfile
.
Jeśli jesteś na t2
instancji ( t2.micro
, t2.medium
, t2.small
), nie ma efemeryczne lub instancja przechowywania dostępne. Musisz więc po prostu utworzyć swap, w EBS
którym w zależności od przypadku użycia może, ale nie musi być dobrym pomysłem. W przeciwnym razie postępuj zgodnie z odpowiedzią @David i utwórz swap na efemerycznym magazynie, aby uniknąć płacenia kosztów EBS.
Więcej informacji: http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/InstanceStorage.html znajduje się tabela, która pokazuje, ile efemerycznej pamięci masowej otrzymujesz dla każdego typu wystąpienia.
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.
. Co wydaje się, że AWS pobierze opłaty za operacje odczytu i zapisu.
Możesz utworzyć przestrzeń wymiany, wykonując następujące kroki Tutaj tworzymy swap w /home/
dd if=/dev/zero of=/home/swapfile1 bs=1024 count=8388608
Tutaj liczba jest liczbą kilobajtów przestrzeni wymiany
mkswap /home/swapfile1
vi /etc/fstab
dokonać wpisu:
/home/swapfile1 swap swap defaults 0 0
biegać:
swapon -a
Możemy dodać przestrzeń wymiany na dowolnym serwerze
utwórz plik za pomocą polecenia dd
#dd if=/dev/zero of=/swapfile bs=1M count=2048
or
#dd if=/dev/zero of=/swapfile bs=1024M count=2
bs jest wielkością bloku, a liczba odnosi się do rozmiaru w MB lub GB
możemy użyć odwrotnie
Po utworzeniu zmień uprawnienia do pliku:
#chmod 600 /swapfile
Następnie makewap plik:
#mkswap /swapfile
Następnie włącz plik wymiany poleceniem swapon:
#swapon /swapfile
Sprawdź za pomocą bezpłatnego polecenia, czy zamiana jest włączona, czy nie:
#free -h
#swapon -s
Korzystanie z magazynu instancji Davida odpowiedź początkowo działała dla mnie (na m5d.2xlarge), jednak po zatrzymaniu instancji EC2 i ponownym jej włączeniu nie mogłem ponownie ssh do tej instancji.
Dzienniki instancji zgłosiły: „Jesteś w trybie awaryjnym. Po zalogowaniu wpisz„ journalctl -xb ”, aby wyświetlić dzienniki systemowe,„ systemctl reboot ”, aby ponownie uruchomić komputer,„ systemctl default ”lub„ exit ”, aby uruchomić komputer w trybie domyślnym. Naciśnij Enter do konserwacji ”
Zamiast tego postępowałem zgodnie z instrukcjami AWS w tym linku i wszystko działało idealnie, w tym po wyłączeniu i ponownym włączeniu instancji.
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
Wypróbuj swapspace http://pqxx.org/development/swapspace/
Większość dystrybucji ma to zapakowane.
W EC2 możesz chcieć zmienić „swappath” na dysk / mnt lub high-iops.
Możesz użyć następującego skryptu, aby dodać swap w Amazon Linux.
https://github.com/chetankapoor/swap
Pobierz skrypt za pomocą wget:
wget https://raw.githubusercontent.com/chetankapoor/swap/master/swap.sh -O swap.sh
Następnie uruchom skrypt w następującym formacie:
sh swap.sh 2G
Kompletny samouczek można odwiedzić: