Малките сървъри остават без памет в най-лошите моменти: apt upgrade, Docker билд, нощен бекъп. Без swap OOM killer-ът на ядрото избира процес и го приключва, често базата ти данни. Swap файлът е евтин предпазен колан, който дава на тези пикове къде да отидат. Отнема пет команди.
1. Провери какво имаш
swapon --show
free -h
Ако swapon --show не изведе нищо, още няма swap.
2. Създай swap файла
fallocate -l 2G /swapfile
chmod 600 /swapfile
mkswap /swapfile
swapon /swapfile
chmod 600 е важно: swap-ът може да съдържа парчета от всичко, което е било в паметта, включително тайни, така че само root трябва да може да го чете. Ако fallocate се провали с «operation not supported», ползвай dd вместо него:
dd if=/dev/zero of=/swapfile bs=1M count=2048 status=progress
3. Направи го постоянен
Без тази стъпка swap-ът изчезва след рестарт:
echo '/swapfile none swap sw 0 0' >> /etc/fstab
4. Настрой swappiness
Кажи на ядрото да предпочита RAM и да ползва swap главно при натиск:
echo 'vm.swappiness=10' > /etc/sysctl.d/99-swap.conf
sysctl --system
5. Провери
swapon --show
free -h
Трябва да видиш swap устройство от 2 GB, а cat /proc/sys/vm/swappiness трябва да отпечата 10.
Колко голям да е?
- Сървър с 1–2 GB RAM: 1–2 GB swap.
- 4 GB и повече: 1–2 GB все още стигат като предпазна мрежа.
Не оразмерявай swap-а на «двойно повече от RAM». На сървър swap-ът е там, за да поема кратки пикове, не за да пуска натоварвания, които не се побират в паметта.
Когато swap не е отговорът
Наблюдавай го няколко дни:
vmstat 5
Колоните si и so показват страниците, влизащи и излизащи от swap в секунда. Случайна активност е наред. Постоянни ненулеви стойности значат, че на сървъра не му стига памет и всичко чака диска. Тогава решението е повече RAM; виж колко RAM трябва на един VPS. В EQVPS можеш да минеш на по-голям план без преинсталиране; данните ти остават.
Коментари
Още няма коментари. Бъди първият.