> For the complete documentation index, see [llms.txt](https://docs.iexexchanger.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.iexexchanger.com/knowledge-base/servery-domeny-i-infrastruktura/overview/process-map.md).

# Карта процессов iEXExchanger

Открытая главная страница не подтверждает исправность всей платформы. Веб-запросы, расписание, очереди, SSR, мониторинг и WebSocket работают отдельно и могут остановиться независимо.

Эта страница является канонической картой владения процессами. [Подготовка сервера](https://docs.iexexchanger.com/ustanovka-i-obnovlenie/ustanovka/podgotovka-servera) перечисляет доступные компоненты при установке, а здесь определяется, какие из них должны постоянно работать в конкретной конфигурации.

## Что видно в панели

Встроенные мониторы открываются по путям:

* **«Утилиты» — «Horizon и Pulse» — «Laravel Horizon»**;
* **«Утилиты» — «Horizon и Pulse» — «Laravel Pulse»**.

Точное право для обоих экранов: «Разрешить доступ к мониторингу данных». Оно выдаётся через **«Пользователи» — «Список групп пользователей» — открыть группу**.

Reverb, Supervisor и PM2 не имеют отдельной страницы управления в админке. Их проверяет технический специалист через SSH и конечные пользовательские сценарии.

## Каноническое владение

| Компонент              | Назначение                                                 | Кто запускает                             | Когда нужен                                                            |
| ---------------------- | ---------------------------------------------------------- | ----------------------------------------- | ---------------------------------------------------------------------- |
| Nginx                  | HTTPS, статические файлы и reverse proxy                   | Системная служба                          | Всегда                                                                 |
| PHP-FPM                | Серверная часть и панель                                   | Системная служба                          | Всегда                                                                 |
| PostgreSQL             | Основные данные и при необходимости отдельные данные Pulse | Системная служба                          | Всегда                                                                 |
| Redis                  | Очереди, кеш, сигналы и события                            | Системная служба                          | По рабочей конфигурации iEXExchanger                                   |
| Laravel Scheduler      | Запускает расписание каждую минуту                         | Cron пользователя серверного сайта        | Всегда                                                                 |
| Horizon                | Обслуживает настроенные Redis-очереди                      | Supervisor, пользователь серверного сайта | Когда используются очереди; стандартная поставка рассчитана на Horizon |
| Отдельный `queue:work` | Обслуживает только явно вынесенную из Horizon очередь      | Supervisor                                | Только по отдельной инструкции поставки                                |
| `pulse:check`          | Передаёт серверные показатели в Pulse                      | Supervisor                                | Только при включённом Pulse и необходимости карточки Servers           |
| `pulse:work`           | Переносит Pulse-события из Redis ingest в хранилище        | Supervisor                                | Только если ingest driver установлен в Redis                           |
| Reverb                 | WebSocket для чата и событий реального времени             | Supervisor, пользователь серверного сайта | Когда включены функции реального времени                               |
| SSR `iexexchanger`     | Формирует клиентские страницы через Node.js                | PM2, пользователь клиентского сайта       | Для штатного SSR-клиента                                               |

{% hint style="danger" %}
Не запускайте отдельный `queue:work` для очередей, которые уже обслуживает Horizon. Два набора worker не ускоряют систему предсказуемо и создают рассинхрон тайм-аутов, попыток, журналов и развёртывания.
{% endhint %}

## Очереди Horizon

Текущая серверная конфигурация разделяет обычные и приоритетные задания, медиа, аналитику, уведомления, чат реального времени, AI, административный поиск и диагностику. Один процесс `artisan horizon` запускает настроенные в Horizon supervisor-группы и их worker.

После любого изменения списка очередей проверьте, что каждая прикладная очередь принадлежит ровно одному механизму: Horizon либо специально созданному отдельному worker. Не копируйте строку `queue:work --queue=high,low`, если `high` и `low` уже входят в Horizon.

## Условия запуска Pulse

| Состояние Pulse                            | `pulse:check`                              | `pulse:work`          |
| ------------------------------------------ | ------------------------------------------ | --------------------- |
| Pulse выключен                             | Не запускать                               | Не запускать          |
| Pulse включён, запись напрямую в хранилище | Запускать только для серверных показателей | Не запускать          |
| Pulse включён, Redis ingest                | Запускать только для серверных показателей | Запускать обязательно |

Подробное решение приведено в [«Laravel Pulse»](/knowledge-base/servery-domeny-i-infrastruktura/overview/process-map/pulse.md).

## Что зависит от расписания

Cron каждую минуту вызывает Laravel Scheduler, а приложение запускает только наступившие задачи. Через расписание выполняются регулярные проверки, очистка, агрегирование и снимки Horizon каждые пять минут.

Проверка от владельца серверного сайта:

```bash
cd <ПУТЬ_BACKEND>
/opt/php84/bin/php artisan schedule:list
```

Если cron остановлен, Horizon может продолжать старые задания, но новые регулярные задачи и снимки не появятся.

## Симптомы и ответственный процесс

| Симптом                                   | Сначала проверить                                         |
| ----------------------------------------- | --------------------------------------------------------- |
| Клиентский сайт возвращает 502            | PM2 `iexexchanger`, порт `127.0.0.1:4000`, Nginx upstream |
| Панель открывается, уведомления задержаны | Horizon, Redis и очередь уведомлений                      |
| Чат обновляется только после перезагрузки | Reverb, Nginx WebSocket, origin и Cloudflare              |
| Курсы или регулярные проверки устарели    | Cron, Scheduler и соответствующую очередь                 |
| Pulse не показывает сервер                | Включённость Pulse, `pulse:check`, хранилище и кеш        |
| Pulse-события отстают при Redis ingest    | `pulse:work` и отдельное Redis-подключение                |
| Horizon не показывает новые снимки        | Scheduler, команду снимка и сам Horizon                   |

## Приёмка после установки или перезагрузки

1. Проверьте системные службы Nginx, PHP-FPM, PostgreSQL и Redis.
2. Проверьте одну запись cron для Scheduler.
3. Убедитесь, что Supervisor запускает Horizon и только нужные условные процессы.
4. От владельца клиентского сайта проверьте один PM2-процесс `iexexchanger`.
5. Откройте Horizon и Pulse под техническим администратором с точным правом.
6. Выполните безопасную задачу очереди.
7. Откройте чат заявки в панели и клиентской сессии и проверьте сообщение без обновления страницы.
8. Проверьте SSR локально и через публичный HTTPS.

Настройка конфигурационных файлов приведена в [«Настройке Supervisor и PM2»](/knowledge-base/servery-domeny-i-infrastruktura/overview/process-map/supervisor-and-pm2.md), а порядок обновления — в [«Развёртывании и перезапуске»](/knowledge-base/servery-domeny-i-infrastruktura/overview/process-map/deployment.md).


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.iexexchanger.com/knowledge-base/servery-domeny-i-infrastruktura/overview/process-map.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
