Я запустив кілька серверів на EC2, і вони не мають своп.
Чи я щось роблю не так, чи машин просто немає?
Я запустив кілька серверів на EC2, і вони не мають своп.
Чи я щось роблю не так, чи машин просто немає?
Відповіді:
Ви праві, зображення Ubuntu EC2 EBS не поставляються з налаштованим простором підкачки ( принаймні для 11,04 ). У "звичайних" образів типу екземпляра є розділ підкачки, хоча лише 896 Мб на той, який я тестував.
Якщо вибухне якийсь процес, і у вас немає місця для заміни, ваш сервер може ненадовго зупинитися повзанням, перш ніж починає вбивця OOM, тоді як при свопі це просто стає повільним. З цієї причини мені завжди подобається мати місця для обміну, навіть з достатньою кількістю оперативної пам’яті. Ось ваші варіанти:
Створіть об'єм EBS (у 2–4 рази більший за розмір вашої оперативної пам’яті), приєднайте його до свого примірника (мені подобається називати його / dev / xvdm для «пам’яті») sudo mkswap /dev/xvdm
, додайте його до fstab sudo swapon -a
, і вам добре йти . Я робив це раніше, і це працює чудово, але це, мабуть, трохи повільніше, ніж зберігання примірників, оскільки він переходить через мережу.
Або ви, можливо, зможете перерозподілити свій диск, щоб додати розділ swap, хоча це може зажадати створення нового AMI. Я не зміг це зробити в запущеному екземплярі, тому що я не можу відключити кореневу файлову систему і навіть не маю доступу до дискового пристрою (/ dev / xvda), лише до розділу (xvda1).
Або ви можете створити файл swap. Зараз це моє вподобане рішення.
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 не стягує плату за i / o в магазині екземплярів. Крім того, зберігання екземплярів у багатьох випадках ефективніше, ніж EBS. Просто переконайтеся, що у вас є сценарій, який відтворює файл swap у випадку, якщо ви зупините примірник. Перезавантаження добре. Чому о, чому його немає за замовчуванням?
Давайте знайдемо примірник-сховище.
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,1 Гб безкоштовно! Помістіть туди свій замін і забудьте 100 доларів надбавки за один сервер, коли ваш своп на базі EBS помилився. Невдалий досвід спілкування тут.
Мабуть, у деяких випадках ви не бачите сховища екземплярів.
Залежно від типу екземпляра, спочатку потрібно приєднати томи зберігання до примірника, використовуючи параметри відображення блоку пристрою. Якщо цього не зробити, ви, можливо, навіть не побачите пристрої під / dev (відповідно до того, як використовувати сховище "Instance Store Volumes" в Amazon EC2? )
Примітка : Amazon змінив свою цінову політику і не стягує плату за запити вводу / виводу з середини 2016 року. Відповідь зберігається тут з історичних причин, але немає жодних наслідків щодо використання (або не використання) свопів у випадках, підтримуваних EC2 EBS.
Це за дизайном. Зміна за замовчуванням вимкнено у випадках, підтримуваних EC2 EBS, щоб уникнути непередбачуваних витрат.
Якщо у вас є голодна пам'ять програма, яка переходить в шахрайство (скажімо, на крихітному чи маленькому екземплярі), вона може генерувати досить велику кількість запитів вводу / виводу на вашому обсязі 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.