---
title: "ZFPM (Zone FastCGI Process Manager)"
canonical_url: "https://www.zone.lv/help/ru/kb/zfpm-zone-fastcgi-process-manager-3/"
post_type: "ht_kb"
published: "2024-04-23T13:51:57+00:00"
modified: "2024-04-23T13:53:45+00:00"
language: "ru"
author: "silver"
taxonomies:
  ht_kb_category:
    - name: "Apache"
      url: "https://www.zone.lv/help/ru/kb-categories/apache-ru/"
    - name: "Техническое"
      url: "https://www.zone.lv/help/ru/kb-categories/tehnicheskoje/"
  ht_kb_tag:
    - name: "ZFPM"
      url: "https://www.zone.lv/help/ru/kb-tags/zfpm-ru/"
    - name: "Zone FastCGI Process Manager"
      url: "https://www.zone.lv/help/ru/kb-tags/zone-fastcgi-process-manager-ru/"
---

# ZFPM (Zone FastCGI Process Manager)

### Обзор

**ZFPM** (Zone FastCGI Process Manager) – это программный продукт, разработанный компанией Zone Media, целью которого является предоставление автоматизированного, масштабируемого и безопасного способа запуска приложений на основе FastCGI в виртуальных серверных средах.

**ZFPM – это в первую очередь менеджер процессов для PHP-приложений**, но он также может работать с другими FastCGI-приложениями (например, Ruby On Rails, Django).

Поскольку безопасность является нашим главным приоритетом в общей среде, нецелесообразно запускать приложения с привилегиями веб-сервера, как в случае с mod\_php (DSO). PHP в режиме FastCGI позволяет каждому виртуальному серверу запускать свои приложения с привилегиями пользователя.

Система на основе ZFPM состоит из двух основных компонентов:

- **ZFPM** – Менеджер процессов FastCGI
- **mod\_zfpm** – Модуль Apache2 для запросов FastCGI – оптимизирован специально для ZFPM

Задача **mod\_zfpm** – отправить входящий HTTP-запрос на ZFPM, который при необходимости запустит и перешлет его нужному приложению PHP-FCGI. PHP-FCGI генерирует ответ (веб-страницу) и отправляет его обратно ZFPM, который, в свою очередь, отправляет его mod\_zfpm и, наконец, клиенту, инициировавшему запрос. Передача данных между всеми тремя компонентами (mod\_zfpm &lt;-&gt; ZFPM &lt;-&gt; PHP-FCGI) осуществляется с помощью протокола FastCGI.

В качестве **альтернативы ZFPM** можно использовать модули Apache **mod\_fcgid** и **mod\_fastcgi**, менеджеры процессов которых жестко интегрированы в процесс веб-сервера Apache. Отсюда вытекает важное отличие от ZFPM, который управляет всеми процессами FCGI совершенно отдельно от веб-сервера Apache. Это означает, что начальная загрузка программного обеспечения веб-сервера не прерывает и не оказывает прямого влияния на работающие PHP-скрипты. Скрипты могут беспрепятственно завершать свою работу, независимо от того, что, например, конфигурация веб-сервера изменилась в процессе работы и программное обеспечение было инициализировано. Кроме того, не все процессы PHP-FCGI останавливаются/запускаются во время начальной загрузки веб-сервера.

Количество процессов PHP-FCGI на сервере под нагрузкой может исчисляться тысячами, и было бы крайне нерационально и неудобно загружать такое большое количество процессов, просто внеся небольшое изменение в конфигурацию веб-сервера.

Поскольку ZFPM является универсальным инструментом для всего, что говорит на языке FastCGI, нет никаких проблем с одновременным запуском на виртуальных серверах приложений, основанных на разных версиях PHP. В качестве альтернативы ZFPM можно упомянуть еще одну – PHP-FPM, которая представляет собой систему FastCGI, ориентированную только на PHP. Однако ее главным недостатком является сложность безопасного управления процессами PHP-FCGI, особенно в общей среде, где на одном физическом сервере могут быть тысячи различных виртуальных серверов, которые должны иметь возможность запускать различные версии PHP по желанию.

### Описания наиболее распространенных ошибок

Хотя **FastCGI является одним из самых быстрых и безопасных способов запуска PHP в общей среде**, он (в отличие от простого mod\_php) представляет собой довольно сложную цепочку обработки запросов, где сбои в различных компонентах могут привести к появлению различных, порой загадочных сообщений в журнале ошибок Apache.

Ниже приведены некоторые из наиболее распространенных сообщений об ошибках ZFPM и некоторые подсказки о том, как начать искать причину ошибки.

`Connection to FastCGI was reset by peer during reading response. Check your FastCGI application log. Increase LogLevel verbosity to 'info' for additional protocol info.`

Первым делом проверьте лог-файл вашего приложения, так как, скорее всего, оно неожиданно прекратило работу и закрыло FastCGI-соединение. Клиент получит сообщение об ошибке HTTP 500. Если вы не можете определить причину самостоятельно, обратитесь в службу технической поддержки и узнайте, как воспроизвести ошибку.

---

`stderr: Timeout (30s) exceeded while waiting for FCGI process to become available`

Ограничение процессов PHP-FCGI, выполняющих параллельные запросы на этом виртуальном хосте, достигнут, и запрос безрезультатно ожидает освобождения какого-либо процесса в течение не менее 30 секунд. Клиент получает сообщение об ошибке HTTP 500. Скорее всего, речь идет о сайте, испытывающем значительную нагрузку, поэтому, если проблема возникает часто, рекомендуется обратиться за ее решением в службу технической поддержки.

---

`stderr: Timeout (900s) exceeded while reading from socket (application)`

Приложение обрабатывает запрос не менее 15 минут, не отправляя ответа. Скрипт должен время от времени что-то выдавать, иначе менеджер процессов решит, что скрипт где-то “застрял”, и принудительно прервет его. Также стоит отметить, что максимальное время обработки веб-запроса составляет 86400 секунд, и если оно будет достигнуто, скрипт будет прерван независимо от того, выводит он что-нибудь или нет. Если HTTP-заголовки уже были отправлены, ответ будет прерван на полпути. Если они не отправлены, клиент получит сообщение об ошибке HTTP 500.

---

`stderr: Timeout (150s) exceeded while reading from socket (server)`

HTTP-клиент отправляет запрос слишком медленно. В данном примере он не смог отправить ни одного нового байта за 150 секунд. Менеджер процессов прерывает ожидание, и клиент получает сообщение об ошибке HTTP 500.

---

`stderr: <Error reported by PHP script>`

Сообщения об ошибках скриптов, которые не перехватываются самим скриптом, передаются PHP-FCGI на веб-сервер. Такие сообщения об ошибках отображаются непосредственно в логе ошибок.
