Что кэширует OPcache
PHP разбирает исходник и строит opcodes. OPcache сохраняет скомпилированное представление между запросами процесса, уменьшая повторную работу. В PHP 8.5 OPcache стал неотъемлемой частью сборки, но его production-настройка всё равно проверяется.
Validate timestamps, memory consumption и стратегия deployment должны быть согласованы. Неизменяемый release directory позволяет сбрасывать или перезапускать workers управляемо, не смешивая версии файлов.
Бюджет пула
Preload как deployment contract
Preload выполняет PHP-файл при старте процесса и сохраняет выбранные классы. Ошибка или устаревший список влияет на весь пул. Это не универсальный автозагрузчик и не место для открытия request-specific соединений.
Преимущество измеряется на production-like workload. При каждом release preload и workers должны получить согласованную версию кода; reload входит в процедуру публикации.
JIT: сначала профиль
JIT способен помочь CPU-bound численным задачам, но типичное веб-приложение часто ждёт базу и сеть. Pulse benchmark разделяет parsing JSON, агрегацию и I/O. Ускорение синтетического цикла не доказывает улучшение p95 HTTP latency.
Сравнение фиксирует ветку PHP, настройки OPcache, warm-up, размер данных и вариативность. Если JIT усложняет стабильность без заметного выигрыша, выключенное состояние является обоснованным решением.
pm и память
pm.max_children ограничивается доступной памятью на worker с запасом для master, OPcache и ОС. dynamic, ondemand и static дают разные компромиссы latency и idle memory. max_requests может ограничить накопление утечки, но не заменяет её поиск.
Больший пул способен перегрузить базу большим числом параллельных соединений. Capacity рассчитывается по всей цепочке, а не только по свободной RAM веб-узла.
Лаборатория
Измерьте Pulse без и с прогретым OPcache, отдельно CPU aggregation и чтение. Рассчитайте безопасный max_children по p95 памяти и проверьте очередь при контролируемой нагрузке.
- Benchmark содержит warm-up.
- JIT сравнивается на CPU-bound этапе.
- Пул не превышает лимит соединений базы.
Закрепите материал
Отметка, заметка, чек-лист и ответы остаются в localStorage этого браузера и не отправляются в аналитику.
Перелинковка со справочником
Проверка актуальности
- php.nethttps://www.php.net/manual/en/book.opcache.phpПервичный источник для актуализации фактов. Адрес приведён как текст и не является активной ссылкой.
- php.nethttps://www.php.net/manual/en/install.fpm.phpПервичный источник для актуализации фактов. Адрес приведён как текст и не является активной ссылкой.
- php.nethttps://www.php.net/releases/8.5/en.phpПервичный источник для актуализации фактов. Адрес приведён как текст и не является активной ссылкой.
Текст и схемы созданы для этого самоучителя без воспроизведения страниц, иллюстраций и листингов приложенной книги. Проверено: .