> 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/learn/server-domeny-i-infrastruktura/overview/process-map.md).

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

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

## Обязательные процессы

| Процесс      | Назначение                                              |
| ------------ | ------------------------------------------------------- |
| Nginx        | HTTPS, маршрутизация, статические файлы и reverse proxy |
| PHP-FPM      | Синхронные запросы серверной части и панели             |
| PostgreSQL   | Основные данные и выделенные данные Pulse               |
| Redis        | Очереди, кеш, сигналы и обмен событиями                 |
| Cron Laravel | Запускает расписание приложения каждую минуту           |
| Horizon      | Обрабатывает очереди и собирает их показатели           |
| Pulse check  | Передаёт загрузку каждого сервера в Pulse               |
| Pulse work   | Переносит события из Redis при включённом Redis ingest  |
| Reverb       | Доставляет события чата и интерфейса в реальном времени |
| PM2 SSR      | Формирует клиентские страницы на сервере                |

Процессы PHP-приложения запускаются от владельца серверного сайта, а PM2 — от владельца клиентского сайта. Root нужен для управления системными службами, но не для обычного запуска приложения.

## Потоки очередей

Текущая конфигурация разделяет обычные задачи, медиа, аналитику, уведомления, чат реального времени, AI, административный поиск и системную диагностику. Разделение не гарантирует, что каждая очередь обслуживается: после изменения конфигурации проверьте, что Horizon подписан на все требуемые потоки.

Задержка одной очереди не является основанием очищать Redis или повторять все задания. Определите конкретную очередь, время последней успешной задачи, первую ошибку и внешний эффект.

## Что зависит от cron

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

Проверка расписания:

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

Команду выполняйте от владельца серверного сайта. `<ПУТЬ_BACKEND>` — текущий каталог поставки с файлом `artisan`.

## Признаки остановки

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

## Безопасная диагностика

1. Зафиксируйте точное время и конечный симптом.
2. Проверьте менеджер нужного процесса.
3. Проверьте соединение с его зависимостью.
4. Сохраните первое сообщение ошибки.
5. Исправьте конкретную причину.
6. Выполните мягкий перезапуск только затронутого процесса.
7. Проверьте конечный пользовательский сценарий.

Перезагрузка всего сервера стирает часть текущего состояния и одновременно перезапускает несвязанные процессы. Используйте её только при системной причине или после сохранения доказательств.


---

# 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/learn/server-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.
