Справочник системных ошибок и решений

Windows Server, Active Directory, 1С:Предприятие, СУБД, Linux, Cisco, MikroTik, Asterisk.

⚠️ Важная информация Все материалы, инструкции, команды и скрипты на сайте предоставлены исключительно в ознакомительных целях. Их применение может повлиять на работу операционной системы, программного обеспечения, баз данных, сетевого оборудования и других компонентов инфраструктуры. Перед выполнением действий создайте резервную копию и по возможности протестируйте изменения в безопасной среде. Пользователь самостоятельно оценивает риски и несет ответственность за результат. При отсутствии необходимых знаний обратитесь к квалифицированному ИТ-специалисту.

APACHE_MIGRATE_PREFORK Linux / DevOps

Миграция Apache с MPM Prefork на производительный MPM Event + PHP-FPM

Обновлено: 21.08.2026
  • Высокое потребление памяти каждым процессом Apache (от 50 до 150 MB на соединение из-за встроенного mod_php).
  • Невозможность использовать HTTP/2 в Apache (требует потокобезопасного MPM Event или MPM Worker).
  • Падение производительности веб-сервера при конкурентных запросах.

1. Установка PHP-FPM и модулей Apache

# Ubuntu / Debian
apt-get update
apt-get install -y php-fpm libapache2-mod-fcgid

2. Отключение устаревших модулей mod_php и mpm_prefork

# Отключение версионного mod_php (например, php8.1)
a2dismod php8.1
a2dismod php8.2
a2dismod mpm_prefork

3. Активация MPM Event, HTTP/2 и модулей проксирования FastCGI

a2enmod mpm_event
a2enmod proxy
a2enmod proxy_fcgi
a2enmod setenvif
a2enmod http2

4. Настройка конфигурации PHP-FPM для VirtualHost

Добавьте директиву в /etc/apache2/sites-available/000-default.conf:

<VirtualHost *:80>
    ServerName example.com
    DocumentRoot /var/www/html
    Protocols h2 http/1.1

    # Проксирование PHP скриптов на unix-сокет
    <FilesMatch \.php$>
        SetHandler "proxy:unix:/run/php/php-fpm.sock|fcgi://localhost/"
    </FilesMatch>
</VirtualHost>

5. Проверка синтаксиса и перезапуск сервисов

apachectl configtest
systemctl restart php*-fpm
systemctl restart apache2
💡 Практика специалистов: Переход на MPM Event + PHP-FPM высвобождает до 70-80% оперативной памяти сервера, так как статические файлы (изображения, стили) теперь отдаются легковесными потоками Apache без инициализации среды PHP.

Частые вопросы (FAQ)

Почему mod_php несовместим с MPM Event?

Встроенный интерпретатор mod_php и многие расширения PHP (C-расширения) не являются потокобезопасными (Non-Thread-Safe). В многопоточной среде MPM Event это приводит к деградации памяти и сбоям Segmentation Fault.

Как проверить, какой MPM модуль активен в Apache сейчас?

Выполните команду apachectl -V | grep -i mpm или apachectl -M | grep mpm. Должна отображаться строка mpm_event_module (shared).

Полезные материалы
Рекомендуем