Powrót do bloga
Styczeń 13, 2026Poradniki

Jak skonfigurować PHP-FPM dla optymalnej wydajności

Kompletny przewodnik po konfiguracji ustawień puli PHP-FPM, dostrajaniu wydajności i integracji z Nginx.

Jak skonfigurować PHP-FPM dla optymalnej wydajności

PHP-FPM (FastCGI Process Manager) to alternatywna implementacja PHP FastCGI z dodatkowymi funkcjami przydatnymi dla stron o dużym natężeniu ruchu. Właściwa konfiguracja może znacznie poprawić wydajność serwera i wykorzystanie zasobów.

Instalacja 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

# Uruchom i włącz PHP-FPM
sudo systemctl start php-fpm
sudo systemctl enable php-fpm

Konfiguracja puli PHP-FPM

Edytuj plik konfiguracyjny puli, aby zoptymalizować wydajność:

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

# Kluczowe ustawienia:
user = www-data
group = www-data
listen = /run/php/php8.1-fpm.sock
listen.owner = www-data
listen.group = www-data

# Zarządzanie procesami
pm = dynamic
pm.max_children = 50
pm.start_servers = 10
pm.min_spare_servers = 5
pm.max_spare_servers = 15
pm.max_requests = 500

Dostrajanie wydajności

Zoptymalizuj PHP-FPM pod kątem zasobów swojego serwera:

bash
# Oblicz optymalne max_children:
# (Całkowita pamięć RAM - Inne usługi) / (Pamięć na proces PHP)
# Przykład: (2GB - 500MB) / 50MB = 30 max_children

# Edytuj php.ini dla lepszej wydajności
sudo nano /etc/php/8.1/fpm/php.ini

# Zalecane ustawienia:
memory_limit = 256M
max_execution_time = 300
upload_max_filesize = 64M
post_max_size = 64M

# Zrestartuj PHP-FPM
sudo systemctl restart php-fpm

Konfiguracja Nginx

Skonfiguruj Nginx do współpracy z PHP-FPM:

bash
sudo nano /etc/nginx/sites-available/yourdomain.com

# Dodaj obsługę 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;
}

# Przetestuj i przeładuj Nginx
sudo nginx -t
sudo systemctl reload nginx

Monitorowanie PHP-FPM

bash
# Sprawdź status PHP-FPM
sudo systemctl status php-fpm

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

# Sprawdź status puli (jeśli strona statusu jest włączona)
curl http://localhost/status

# Zobacz logi
sudo tail -f /var/log/php8.1-fpm.log

Wskazówki dotyczące optymalizacji PHP-FPM

  • Dostosuj pm.max_children w oparciu o dostępną pamięć RAM
  • Używaj pm = dynamic dla większości przypadków użycia
  • Ustaw pm.max_requests, aby zapobiec wyciekom pamięci
  • Włącz opcache dla lepszej wydajności
  • Regularnie monitoruj status PHP-FPM
  • Używaj oddzielnych pul dla różnych aplikacji
  • Aktualizuj PHP i PHP-FPM