Zpět na blog
Leden 13, 2026Návody

Jak nakonfigurovat PHP-FPM pro optimální výkon

Kompletní návod na konfiguraci nastavení poolu PHP-FPM, ladění výkonu a integraci s Nginx.

Jak nakonfigurovat PHP-FPM pro optimální výkon

PHP-FPM (FastCGI Process Manager) je alternativní implementace PHP FastCGI s dalšími funkcemi užitečnými pro weby s vysokou návštěvností. Správná konfigurace může výrazně zlepšit výkon vašeho serveru a využití zdrojů.

Instalace PHP-FPM

bash
# Ubuntu/Debian
sudo apt update
sudo apt install php-fpm php-mysql php-mbstring php-xml php-curl -y

# CentOS/RHEL
sudo yum install php-fpm php-mysql php-mbstring php-xml php-curl -y

# Spustit a povolit PHP-FPM
sudo systemctl start php-fpm
sudo systemctl enable php-fpm

Konfigurace poolu PHP-FPM

Upravte konfigurační soubor poolu pro optimalizaci výkonu:

bash
sudo nano /etc/php/8.1/fpm/pool.d/www.conf

# Klíčová nastavení:
user = www-data
group = www-data
listen = /run/php/php8.1-fpm.sock
listen.owner = www-data
listen.group = www-data

# Správa procesů
pm = dynamic
pm.max_children = 50
pm.start_servers = 10
pm.min_spare_servers = 5
pm.max_spare_servers = 15
pm.max_requests = 500

Ladění výkonu

Optimalizujte PHP-FPM pro prostředky vašeho serveru:

bash
# Vypočítat optimální max_children:
# (Celková RAM - Ostatní služby) / (Paměť na proces PHP)
# Příklad: (2 GB - 500 MB) / 50 MB = 30 max_children

# Upravit php.ini pro lepší výkon
sudo nano /etc/php/8.1/fpm/php.ini

# Doporučená nastavení:
memory_limit = 256M
max_execution_time = 300
upload_max_filesize = 64M
post_max_size = 64M

# Restartovat PHP-FPM
sudo systemctl restart php-fpm

Konfigurace Nginx

Nakonfigurujte Nginx pro spolupráci s PHP-FPM:

bash
sudo nano /etc/nginx/sites-available/vasedomena.cz

# Přidejte zpracování PHP:
location ~ \.php$ {
    include snippets/fastcgi-php.conf;
    fastcgi_pass unix:/run/php/php8.1-fpm.sock;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    include fastcgi_params;
}

# Otestovat a restartovat Nginx
sudo nginx -t
sudo systemctl reload nginx

Sledování PHP-FPM

bash
# Kontrola stavu PHP-FPM
sudo systemctl status php-fpm

# Zobrazit procesy PHP-FPM
ps aux | grep php-fpm

# Kontrola stavu poolu (pokud je povolena stavová stránka)
curl http://localhost/status

# Zobrazit protokoly
sudo tail -f /var/log/php8.1-fpm.log

Tipy pro optimalizaci PHP-FPM

  • Upravte pm.max_children na základě dostupné paměti RAM
  • Ve většině případů používejte pm = dynamic
  • Nastavte pm.max_requests, abyste zabránili únikům paměti
  • Povolte opcache pro lepší výkon
  • Pravidelně sledujte stav PHP-FPM
  • Pro různé aplikace používejte samostatné pooly
  • Udržujte PHP a PHP-FPM aktualizované