Uruchomiłem kilka serwerów na EC2 i nie mają wymiany.
Czy robię coś złego, czy też maszyny tego po prostu nie mają?
Uruchomiłem kilka serwerów na EC2 i nie mają wymiany.
Czy robię coś złego, czy też maszyny tego po prostu nie mają?
Odpowiedzi:
Masz rację, obrazy EBS Ubuntu EC2 nie są dostarczane ze skonfigurowaną przestrzenią wymiany ( przynajmniej dla 11.04 ). „Zwykłe” obrazy typu instancja mają partycję wymiany, choć tylko 896 MB w porównaniu z tą, którą testowałem.
Jeśli jakiś proces wybuchnie, a Ty nie masz przestrzeni wymiany, Twój serwer może zatrzymać się na chwilę, zanim zabije OOM, podczas gdy w przypadku wymiany zamiana staje się wolniejsza. Z tego powodu zawsze lubię mieć przestrzeń do wymiany, nawet przy wystarczającej ilości pamięci RAM. Oto twoje opcje:
Utwórz wolumin EBS (2-4 razy większy niż rozmiar pamięci RAM), dołącz go do instancji (lubię nazywać go / dev / xvdm dla „pamięci”) sudo mkswap /dev/xvdm
, dodaj go do fstab sudo swapon -a
i gotowe . Zrobiłem to już wcześniej i działa dobrze, ale prawdopodobnie jest nieco wolniejszy niż sklep instancji, ponieważ przechodzi przez sieć.
Lub możesz partycjonować dysk, aby dodać partycję wymiany, chociaż może to wymagać utworzenia nowego interfejsu AMI. Nie byłem w stanie tego zrobić w działającej instancji, ponieważ nie mogę odmontować głównego systemu plików, a nawet nie mam dostępu do urządzenia dyskowego (/ dev / xvda), tylko partycji (xvda1).
Lub możesz utworzyć plik wymiany. To jest teraz moje preferowane rozwiązanie.
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
Gotowy. :) Wiem, że wiele osób odczuwa niechęć do używania plików zamiast partycji, ale z pewnością działa wystarczająco dobrze jako przestrzeń wymiany awaryjnej.
Najlepszą lokalizacją wymiany IMHO jest sklep instancji. Dlaczego? AWS nie pobiera opłat za we / wy w sklepie instancji. Poza tym sklep instancji jest w wielu przypadkach bardziej wydajny niż EBS. Upewnij się tylko, że masz skrypt, który odtwarza plik wymiany na wypadek zatrzymania instancji. Ponowne uruchomienie jest w porządku. Dlaczego och, dlaczego nie ma go tam domyślnie?
Zlokalizujmy magazyn instancji.
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
Hurray, 160,1 GB za darmo! Umieść swap tam i zapomnij o 100 $ nadwyżkach na serwer, gdy swap oparty na EBS zostanie zalany przez pomyłkę. Niefortunne doświadczenie mówienia tutaj.
Najwyraźniej w niektórych przypadkach nie widzisz magazynu instancji.
W zależności od typu instancji należy najpierw dołączyć woluminy magazynu instancji do instancji za pomocą opcji mapowania urządzeń blokowych. Jeśli tego nie zrobisz, możesz nawet nie zobaczyć urządzeń w katalogu / dev (jak na temat korzystania z magazynu „Instance Store Volumes” w Amazon EC2? )
Uwaga : Amazon zmienił swoją politykę cenową i nie pobiera opłat za żądania We / Wy od połowy 2016 r. Odpowiedź jest przechowywana tutaj ze względów historycznych, ale nie ma wpływu na koszty korzystania (lub nie używania) wymiany w instancjach wspieranych przez EC2 EBS.
To jest z założenia. Zamiana jest domyślnie wyłączona w instancjach wspieranych przez EC2 EBS, aby uniknąć nieprzewidzianych kosztów.
Jeśli masz aplikację wymagającą dużej ilości pamięci, która jest nieuczciwa (powiedzmy na małej lub małej instancji), może generować dość dużą liczbę żądań We / Wy na woluminie EBS. Amazon pobiera 0,10 USD za 1 milion żądań We / Wy (patrz http://aws.amazon.com/pricing/ebs/ ) .
W normalnych warunkach nie powinieneś się tym martwić; zazwyczaj koszt żądań We / Wy nawet w mniejszych instancjach kilka dolarów, jeśli tak. Jeśli więc wiesz, że masz instancję o odpowiednim rozmiarze, a ta zamiana będzie używana rzadko, włącz ją. Ale bądź ostrożny z drobnymi przypadkami.
Jeśli włączysz zamianę, możesz mieć oko na Raporty użycia. Opcjonalnie możesz również skonfigurować alert rozliczeniowy, przechodząc do panelu sterowania CloudWatch i tworząc nowy alarm dla całkowitej kwoty rozliczenia. W ten sposób zostaniesz natychmiast powiadomiony, że dzieje się coś dziwnego z twoimi instancjami.
Sprawdź /etc/fstab
plik, prawdopodobnie zostały skonfigurowane bez zamiany na używanym obrazie. Myślę, że niektórzy ludzie uruchamiają serwery bez wymiany, ponieważ oczekują, że nigdy nie będą używać więcej niż całkowitej pamięci - zamiana powoduje, że wszystko jest bardzo wolne.
Jednak zawsze mam paranoję na punkcie procesu tworzenia balonów w pamięci, więc uważam, że rozsądnie byłoby po prostu skonfigurować dysk wymiany i odtworzyć obraz z działającej instancji ec2.
Prostym rozwiązaniem do prowadzenia swap
w EC2
obrazach jest eksploatowany swap
skompresowane lz4
w ram
z zram-init
.
To rozwiązanie ma nie wziąć ram
z dala od host
:
zswap
który zapewnia skompresowaną pamięć podręczną RAM na normalnym pliku wymiany / dysku: wiki.archlinux.org/index.php/zswap . Więcej informacji na temat zram znajduje się na stronie cnx-software.com/2018/05/14/...