Обратно към блога
Януари 13, 2026Ръководства

Как да конфигурирате PHP-FPM за оптимална производителност

Пълно ръководство за конфигуриране на настройките на пула PHP-FPM, настройка на производителността и интеграция с Nginx.

Как да конфигурирате PHP-FPM за оптимална производителност

PHP-FPM (FastCGI Process Manager) е алтернативна имплементация на PHP FastCGI с допълнителни функции, полезни за уебсайтове с голям трафик. Правилната конфигурация може значително да подобри производителността на вашия сървър и използването на ресурсите.

Инсталиране на 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

# Стартиране и активиране на PHP-FPM
sudo systemctl start php-fpm
sudo systemctl enable php-fpm

Конфигуриране на PHP-FPM пула

Редактирайте конфигурационния файл на пула, за да оптимизирате производителността:

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

# Ключевые настройки:
user = www-data
group = www-data
listen = /run/php/php8.1-fpm.sock
listen.owner = www-data
listen.group = www-data

# Управление на процеси
pm = dynamic
pm.max_children = 50
pm.start_servers = 10
pm.min_spare_servers = 5
pm.max_spare_servers = 15
pm.max_requests = 500

Настройка на производителността

Оптимизирайте PHP-FPM за ресурсите на вашия сървър:

bash
# Изчислете оптималния max_children:
# (Обща RAM - Други услуги) / (Памет на PHP процес)
# Пример: (2GB - 500MB) / 50MB = 30 max_children

# Редактирайте php.ini за по-добра производителност
sudo nano /etc/php/8.1/fpm/php.ini

# Препоръчителни настройки:
memory_limit = 256M
max_execution_time = 300
upload_max_filesize = 64M
post_max_size = 64M

# Рестартирайте PHP-FPM
sudo systemctl restart php-fpm

Конфигурация на Nginx

Конфигурирайте Nginx да работи с PHP-FPM:

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

# Добавете обработка на 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;
}

# Тествайте и презаредете Nginx
sudo nginx -t
sudo systemctl reload nginx

Мониторинг на PHP-FPM

bash
# Проверка на състоянието на PHP-FPM
sudo systemctl status php-fpm

# Преглед на процесите на PHP-FPM
ps aux | grep php-fpm

# Проверка на състоянието на пула (ако страницата за състояние е активирана)
curl http://localhost/status

# Преглед на логове
sudo tail -f /var/log/php8.1-fpm.log

Съвети за оптимизация на PHP-FPM

  • Регулирайте pm.max_children въз основа на наличната RAM
  • Използвайте pm = dynamic за повечето случаи
  • Задайте pm.max_requests, за да предотвратите изтичане на памет
  • Активирайте opcache за по-добра производителност
  • Следете редовно състоянието на PHP-FPM
  • Използвайте отделни пулове за различни приложения
  • Поддържайте PHP и PHP-FPM актуализирани