Menu
Szybki wybór
Hosting Domeny VPS SSL Kalkulator Porównania FAQ
Aktywne kody
Wszystkie kody rabatowe

Swap i RAM na VPS — konfiguracja i optymalizacja pamięci

Opublikowano: 8 kwietnia 2026 · Kategoria: VPS i serwery

Mały VPS (1-2 GB RAM) to najczęstszy wybór dla stron WordPress i małych aplikacji. Problem pojawia się, gdy MySQL, PHP-FPM i nginx jednocześnie potrzebują więcej pamięci niż dostępne RAM — Linux uruchamia OOM Killer, który losowo zabija procesy. Prawidłowo skonfigurowany swap i optymalizacja pamięci zapobiegają temu scenariuszowi.

Sprawdzenie aktualnego stanu pamięci

# Przegląd RAM i swap
free -h

# Szczegółowy widok swap
swapon --show

# Top 10 procesów według zużycia RAM
ps aux --sort=-%mem | head -11

# Zużycie RAM w czasie rzeczywistym
top -o %MEM

# Czy OOM Killer działał? (sprawdź logi)
sudo dmesg | grep -i "killed process"
sudo grep -i "out of memory" /var/log/syslog | tail -20

Dodanie pliku swap

Rekomendowany rozmiar swap: 2x RAM dla serwerów <4 GB RAM, lub stałe 4 GB dla większych.

# Utwórz plik swap (2 GB)
sudo fallocate -l 2G /swapfile

# Jeśli fallocate nie działa (niektóre systemy plików):
# sudo dd if=/dev/zero of=/swapfile bs=1M count=2048

# Zabezpiecz plik (tylko root może czytać)
sudo chmod 600 /swapfile

# Sformatuj jako przestrzeń swap
sudo mkswap /swapfile

# Aktywuj swap
sudo swapon /swapfile

# Sprawdź czy działa
free -h
swapon --show

Aby swap był trwały po restarcie, dodaj do /etc/fstab:

echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab

Konfiguracja swappiness

vm.swappiness (0-100) kontroluje jak agresywnie kernel używa swap. Domyślna wartość 60 jest zbyt wysoka dla serwerów web.

# Sprawdź aktualną wartość
cat /proc/sys/vm/swappiness

# Zmień tymczasowo (bez restartu)
sudo sysctl vm.swappiness=10

# Zmień trwale
echo "vm.swappiness=10" | sudo tee -a /etc/sysctl.conf
sudo sysctl -p
Zastosowanie swappiness Opis
Serwer web (nginx + PHP) 10 Preferuj RAM, swap tylko w awaryjności
Baza danych (MySQL/MariaDB) 1 Maksymalizuj RAM dla buforów DB
Desktop Ubuntu 60 Domyślna wartość (zbyt wysoka dla serwera)
Serwer Redis/cache 0-10 Cache w RAM, swap szkodzi wydajności

Optymalizacja MySQL/MariaDB — limit pamięci

MySQL jest głównym konsumentem RAM na VPS. Kluczowy parametr to innodb_buffer_pool_size — powinien być ok. 50-70% dostępnego RAM:

# /etc/mysql/mysql.conf.d/mysqld.cnf lub /etc/my.cnf

[mysqld]
# 1 GB RAM na VPS — ustaw na 256-512 MB
innodb_buffer_pool_size = 256M

# 2 GB RAM na VPS — ustaw na 512 MB - 1 GB
# innodb_buffer_pool_size = 512M

# Ogranicz pamięć dla tabel tymczasowych
tmp_table_size = 64M
max_heap_table_size = 64M

# Sprawdzenie aktualnego użycia po restarcie:
# SHOW VARIABLES LIKE 'innodb_buffer_pool_size';

Optymalizacja PHP-FPM — liczba procesów

# /etc/php/8.2/fpm/pool.d/www.conf

[www]
# Tryb dynamiczny — dostosowuje liczbę procesów
pm = dynamic

# Ile RAM zajmuje jeden proces PHP?
# Sprawdź: ps -o rss= -C php-fpm8.2 | awk '{sum+=$1} END {print sum/NR/1024 " MB"}'
# Typowy WordPress: 30-60 MB / proces

# Dla 1 GB RAM (po odjęciu nginx + MySQL ~400 MB zostaje ~600 MB dla PHP):
# 600 MB / 40 MB (avg) = max 15 procesów
pm.max_children = 10
pm.start_servers = 3
pm.min_spare_servers = 2
pm.max_spare_servers = 5

# Ograniczenie pamięci na request
php_admin_value[memory_limit] = 128M

Orientacyjne wymagania RAM

Konfiguracja Min. RAM Komfortowe RAM
nginx + PHP-FPM + WordPress (1 strona) 512 MB 1 GB
nginx + PHP-FPM + MySQL + WordPress 1 GB 2 GB
WooCommerce + duży katalog produktów 2 GB 4 GB
WordPress Multisite (5+ stron) 2 GB 4 GB
nginx + PHP + Redis + MySQL 1.5 GB 3 GB

Najczęstsze pytania

Jak dodać swap do VPS? +
Dodanie 2 GB swap: sudo fallocate -l 2G /swapfile && sudo chmod 600 /swapfile && sudo mkswap /swapfile && sudo swapon /swapfile. Aby swap był trwały po restarcie, dodaj do /etc/fstab: /swapfile none swap sw 0 0. Weryfikacja: free -h lub swapon --show.
Ile RAM potrzebuje WordPress na VPS? +
WordPress z kilkoma wtyczkami potrzebuje min. 256 MB RAM na proces PHP-FPM. Serwer z nginx + PHP-FPM + MySQL + WordPress bezpiecznie działa na 1 GB RAM. WooCommerce z dużym katalogiem produktów potrzebuje 2 GB+. Monitoruj: free -h i ps aux --sort=-%mem | head.
Co to jest OOM Killer i jak go uniknąć? +
OOM Killer (Out of Memory Killer) to mechanizm Linux, który zabija procesy gdy system wyczerpie dostępną pamięć RAM + swap. Typowe ofiary: MySQL, PHP-FPM, lub sam nginx. Objaw: proces nagle znika, w logach "Killed process". Zapobieganie: dodaj swap, zmniejsz memory_limit w PHP, zoptymalizuj innodb_buffer_pool_size w MySQL.
Jaka jest optymalna wartość swappiness na VPS? +
Domyślna wartość swappiness to 60 — system zaczyna używać swap gdy RAM jest zapełniony w 40%. Dla serwerów web: swappiness=10 (używaj swap tylko gdy naprawdę konieczne, preferuj RAM). Dla baz danych: swappiness=1. Zmiana tymczasowa: sudo sysctl vm.swappiness=10. Trwała zmiana: echo "vm.swappiness=10" | sudo tee -a /etc/sysctl.conf.

Do testów swapu i pamięci wybieraj VPS, nie shared hosting

Tutaj najłatwiej porównać, ile RAM naprawdę dostajesz i jak wygląda sensowny punkt startowy dla własnej konfiguracji.