Поиск

Релиз

Содержание

Нужна помощь?

Не нашли ответ на свой вопрос? Свяжитесь с нашей службой поддержки.

Обратиться в поддержку

2.1 Требования

Обновлено: 07 Декабрь 2025 Версия: 2.2

Данный документ описывает минимальные и рекомендуемые системные требования для развертывания системы АСК ЛЕГАРУС в зависимости от количества пользователей и использования функций нейросетей.

Технологический стек

Система построена на следующих технологиях:

  • Backend: Django 5.2.7 (Python 3.x)
  • База данных: PostgreSQL 14+ с расширением pgvector
  • Кэш и очереди: Redis 5.0+
  • Веб-сервер: Nginx (обратный прокси)
  • WSGI сервер: Gunicorn (формула workers: min((2*cpu)+1, 8))
  • ASGI сервер: Daphne (для WebSocket через Django Channels)
  • Фоновые задачи: Celery с Redis в качестве брокера
  • OCR: Tesseract, pdf2image
  • Нейросети: sentence-transformers (all-MiniLM-L6-v2), PyTorch (CPU-only), scikit-learn

Сценарии использования

Сценарий 1: 10 пользователей (минимальные требования)

  • Базовое использование системы
  • Обработка заявок и документов
  • Без активного использования нейросетей (классификация может быть отключена)

Сценарий 2: 100 пользователей без нейросетей

  • Полноценное использование всех функций
  • Обработка файлов и документов
  • Классификация заявок отключена или используется редко

Сценарий 3: 100 пользователей с нейросетями

  • Полноценное использование всех функций
  • Активное использование классификации заявок через ML
  • Генерация эмбеддингов для векторного поиска
  • Еженедельное переобучение моделей

1. Процессор (CPU)

1.1. Минимальные требования (10 пользователей)

Рекомендации:

  • Ядра: 2 ядра (4 потока)
  • Архитектура: x86_64 (AMD64)
  • Частота: 2.0 GHz и выше
  • Примеры: Intel Core i3 8-го поколения, AMD Ryzen 3, или эквивалент

Обоснование:

  • Gunicorn: 2-5 workers (min((2*2)+1, 8) = 5)
  • Daphne: 1 процесс
  • Celery: 1 worker
  • PostgreSQL: базовые операции
  • Redis: легкая нагрузка

1.2. Рекомендуемые требования (100 пользователей без нейросетей)

Рекомендации:

  • Ядра: 4 ядра (8 потоков)
  • Архитектура: x86_64 (AMD64)
  • Частота: 2.5 GHz и выше
  • Примеры: Intel Core i5 10-го поколения, AMD Ryzen 5, или эквивалент

Обоснование:

  • Gunicorn: 8 workers (min((2*4)+1, 8) = 8)
  • Daphne: 1-2 процесса
  • Celery: 2-3 workers (для обработки файлов)
  • PostgreSQL: средняя нагрузка с индексами
  • Redis: средняя нагрузка (кэш, очереди, Channels)

Дополнительные требования:

  • Поддержка инструкций SSE4.2 (для оптимизации PostgreSQL)
  • Поддержка AVX (для NumPy/SciPy при обработке файлов)

1.3. Рекомендуемые требования (100 пользователей с нейросетями)

Рекомендации:

  • Ядра: 8 ядер (16 потоков) или больше
  • Архитектура: x86_64 (AMD64)
  • Частота: 3.0 GHz и выше
  • Примеры: Intel Core i7/i9, AMD Ryzen 7/9, Xeon, EPYC, или эквивалент

Обоснование:

  • Gunicorn: 8 workers (ограничение в коде)
  • Daphne: 2 процесса
  • Celery: 3-4 workers (включая задачи ML)
  • PostgreSQL: высокая нагрузка (векторный поиск через pgvector)
  • Redis: высокая нагрузка
  • ML задачи: генерация эмбеддингов (\~100ms на CPU), классификация, обучение моделей

Дополнительные требования:

  • Поддержка AVX2 (для PyTorch и NumPy)
  • Поддержка FMA (Fused Multiply-Add) для ускорения вычислений
  • Рекомендуется: поддержка AVX-512 (для максимальной производительности PyTorch)

Примечание: Для обучения моделей на больших данных (>10,000 примеров) рекомендуется использовать отдельный сервер с более мощным CPU или временно увеличивать количество Celery workers.


2. Оперативная память (RAM)

2.1. Минимальные требования (10 пользователей)

Рекомендации:

  • Общий объем: 4 ГБ RAM
  • Распределение:
  • Операционная система: \~500 МБ
  • PostgreSQL: 1 ГБ (shared_buffers = 256 МБ)
  • Redis: 256 МБ
  • Gunicorn (5 workers): \~1 ГБ (200 МБ на worker)
  • Daphne: 100 МБ
  • Celery (1 worker): 200 МБ
  • Nginx: 50 МБ
  • Резерв: \~900 МБ

Обоснование:

  • Небольшое количество одновременных запросов
  • Минимальная обработка файлов
  • Без активного использования ML

2.2. Рекомендуемые требования (100 пользователей без нейросетей)

Рекомендации:

  • Общий объем: 16 ГБ RAM
  • Распределение:
  • Операционная система: \~1 ГБ
  • PostgreSQL: 4 ГБ (shared_buffers = 1 ГБ, work_mem = 64 МБ)
  • Redis: 1 ГБ (для кэша и очередей)
  • Gunicorn (8 workers): \~3 ГБ (375 МБ на worker)
  • Daphne (2 процесса): 400 МБ
  • Celery (2-3 workers): 1 ГБ
  • Nginx: 100 МБ
  • Обработка файлов (OCR, временные файлы): 2 ГБ
  • Резерв: \~3.5 ГБ

Обоснование:

  • Средняя нагрузка с пиковыми значениями
  • Обработка файлов до 50 МБ (KB) и 1 ГБ (общий)
  • OCR обработка изображений и PDF
  • Кэширование результатов поиска

Оптимизация:

  • Настройка shared_buffers в PostgreSQL: 25% от RAM (4 ГБ)
  • Настройка effective_cache_size: 75% от RAM (12 ГБ)
  • Настройка Redis maxmemory: 1 ГБ с политикой allkeys-lru

2.3. Рекомендуемые требования (100 пользователей с нейросетями)

Рекомендации:

  • Общий объем: 32 ГБ RAM (рекомендуется 64 ГБ для комфортной работы)
  • Распределение (для 32 ГБ):
  • Операционная система: \~1 ГБ
  • PostgreSQL: 8 ГБ (shared_buffers = 2 ГБ, work_mem = 128 МБ)
  • Redis: 2 ГБ
  • Gunicorn (8 workers): \~4 ГБ
  • Daphne (2 процесса): 500 МБ
  • Celery (3-4 workers): 4 ГБ (включая ML модели)
  • Nginx: 100 МБ
  • ML модели в памяти: 2-4 ГБ
    • sentence-transformers (all-MiniLM-L6-v2): \~200 МБ
    • SGDClassifier модели: \~500 МБ (типично)
    • Эмбеддинги в памяти (кэш): 1-2 ГБ
  • Обработка файлов: 3 ГБ
  • Резерв: \~7 ГБ

Обоснование:

  • Высокая нагрузка с одновременными запросами
  • ML модели загружаются в память для быстрого доступа
  • Генерация эмбеддингов требует дополнительной памяти
  • Векторный поиск через pgvector (индексы HNSW в памяти)
  • Обучение моделей требует дополнительной памяти (временные данные)

Оптимизация:

  • Настройка shared_buffers в PostgreSQL: 25% от RAM (8 ГБ для 32 ГБ системы)
  • Настройка effective_cache_size: 75% от RAM (24 ГБ)
  • Настройка Redis maxmemory: 2 ГБ
  • Использование --preload для Celery workers (загрузка моделей один раз)

Примечание: Для обучения моделей на очень больших данных (>50,000 примеров) рекомендуется временно увеличивать RAM до 64 ГБ или использовать отдельный сервер для обучения.


3. Хранилище (Диск)

3.1. Типы накопителей и их характеристики

HDD (Жесткий диск)

  • IOPS (чтение): 100-200 IOPS
  • IOPS (запись): 100-200 IOPS
  • Пропускная способность: 100-200 МБ/с
  • Задержка: 5-15 мс
  • Применение: Не рекомендуется для продакшена

SATA SSD

  • IOPS (чтение): 50,000-100,000 IOPS
  • IOPS (запись): 30,000-80,000 IOPS
  • Пропускная способность: 500-550 МБ/с (чтение), 500 МБ/с (запись)
  • Задержка: 0.1-0.5 мс
  • Применение: Минимальные требования, базовые сценарии

NVMe SSD

  • IOPS (чтение): 100,000-1,000,000+ IOPS
  • IOPS (запись): 80,000-800,000+ IOPS
  • Пропускная способность: 2,000-7,000 МБ/с (чтение), 1,500-5,000 МБ/с (запись)
  • Задержка: 0.05-0.1 мс
  • Применение: Рекомендуется для всех сценариев, особенно с нейросетями

3.2. Минимальные требования (10 пользователей)

Рекомендации:

  • Тип: SATA SSD
  • Объем: 50 ГБ (минимум), 100 ГБ (рекомендуется)
  • IOPS (чтение): 5,000+ IOPS
  • IOPS (запись): 3,000+ IOPS
  • Пропускная способность: 200+ МБ/с

Распределение:

  • Операционная система: 20 ГБ
  • PostgreSQL (данные + WAL): 10 ГБ
  • Redis (персистентность): 1 ГБ
  • Медиа файлы (media/): 10 ГБ
  • Статические файлы (assets/): 2 ГБ
  • Логи: 2 ГБ
  • Резерв: 5 ГБ

Обоснование:

  • Небольшой объем данных
  • Минимальная нагрузка на диск
  • Базовая производительность достаточна

3.3. Рекомендуемые требования (100 пользователей без нейросетей)

Рекомендации:

  • Тип: NVMe SSD (рекомендуется) или SATA SSD (минимум)
  • Объем: 200 ГБ (минимум), 500 ГБ (рекомендуется)
  • IOPS (чтение): 20,000+ IOPS (SATA SSD) или 100,000+ IOPS (NVMe)
  • IOPS (запись): 15,000+ IOPS (SATA SSD) или 80,000+ IOPS (NVMe)
  • Пропускная способность: 400+ МБ/с (SATA SSD) или 2,000+ МБ/с (NVMe)

Распределение (для 500 ГБ):

  • Операционная система: 30 ГБ
  • PostgreSQL (данные + WAL + индексы): 100 ГБ
  • Данные: 60 ГБ
  • WAL: 10 ГБ
  • Индексы (GIN, HNSW): 30 ГБ
  • Redis (персистентность): 5 ГБ
  • Медиа файлы (media/): 200 ГБ
  • Статические файлы (assets/): 10 ГБ
  • Логи: 20 ГБ
  • Временные файлы (обработка OCR): 50 ГБ
  • Резерв: 75 ГБ

Обоснование:

  • Средний объем данных (документы, файлы)
  • Обработка файлов требует высокой скорости чтения/записи
  • Индексы PostgreSQL (GIN для полнотекстового поиска, триграммы)
  • Кэширование результатов

Оптимизация:

  • Разделение данных PostgreSQL и WAL на разные диски (если возможно)
  • Настройка random_page_cost в PostgreSQL: 1.1 для SSD (вместо 4.0 для HDD)
  • Настройка effective_io_concurrency: 200 для SSD

3.4. Рекомендуемые требования (100 пользователей с нейросетями)

Рекомендации:

  • Тип: NVMe SSD (обязательно)
  • Объем: 500 ГБ (минимум), 1 ТБ (рекомендуется)
  • IOPS (чтение): 100,000+ IOPS
  • IOPS (запись): 80,000+ IOPS
  • Пропускная способность: 2,000+ МБ/с

Распределение (для 1 ТБ):

  • Операционная система: 30 ГБ
  • PostgreSQL (данные + WAL + индексы + векторные данные): 300 ГБ
  • Данные: 150 ГБ
  • WAL: 20 ГБ
  • Индексы (GIN, HNSW): 100 ГБ
  • Векторные эмбеддинги (384 измерения): 30 ГБ
  • Redis (персистентность): 10 ГБ
  • Медиа файлы (media/): 400 ГБ
  • Статические файлы (assets/): 10 ГБ
  • Логи: 30 ГБ
  • Временные файлы (обработка OCR, ML): 100 ГБ
  • Модели ML (на диске, резервные копии): 20 ГБ
  • Резерв: 100 ГБ

Обоснование:

  • Большой объем данных (документы, файлы, эмбеддинги)
  • Векторные индексы HNSW требуют высокой скорости чтения
  • Обучение моделей создает временные файлы
  • Высокая нагрузка на диск при генерации эмбеддингов

Оптимизация:

  • Разделение данных PostgreSQL и WAL на разные NVMe диски
  • Настройка random_page_cost: 1.1
  • Настройка effective_io_concurrency: 200
  • Использование pgvector с индексами HNSW (оптимизированы для SSD)
  • Регулярная очистка временных файлов

Примечание: Для очень больших объемов данных (>1 ТБ) рекомендуется использовать RAID 10 (NVMe) или распределенное хранилище.


4. Сетевая инфраструктура

4.1. Минимальные требования (10 пользователей)

Рекомендации:

  • Пропускная способность: 100 Мбит/с (внутренняя сеть)
  • Задержка: \< 10 мс (внутренняя сеть)
  • Протокол: TCP/IP

Обоснование:

  • Небольшое количество одновременных подключений
  • Базовые операции (HTTP запросы, загрузка файлов)

4.2. Рекомендуемые требования (100 пользователей)

Рекомендации:

  • Пропускная способность: 1 Гбит/с (внутренняя сеть)
  • Задержка: \< 5 мс (внутренняя сеть)
  • Протокол: TCP/IP
  • WebSocket: Поддержка WebSocket для Django Channels

Обоснование:

  • Множественные одновременные подключения
  • Загрузка файлов до 1 ГБ
  • WebSocket соединения для уведомлений в реальном времени
  • Синхронизация через Redis Channels

Дополнительные требования:

  • Настройка Nginx для поддержки WebSocket (upgrade заголовки)
  • Настройка таймаутов для больших файлов (120+ секунд)

5. Требования к хостингу

5.1. Облачный хостинг (VPS/Cloud)

Минимальные требования (10 пользователей)

  • Провайдер: Любой (TimeWeb, AWS, Hetzner, Yandex Cloud, и т.д.)
  • Конфигурация: 2 vCPU, 4 ГБ RAM, 50 ГБ SSD
  • Стоимость: \~1000 руб./месяц

Рекомендуемые требования (100 пользователей без нейросетей)

  • Провайдер: Рекомендуется с хорошей производительностью дисков
  • Конфигурация: 4 vCPU, 16 ГБ RAM, 200 ГБ NVMe SSD
  • Стоимость: \~5 000-10 000 руб. /месяц

Рекомендуемые требования (100 пользователей с нейросетями)

  • Провайдер: С высокой производительностью CPU и дисков
  • Конфигурация: 8 vCPU, 32 ГБ RAM, 500 ГБ NVMe SSD
  • Стоимость: \~20 000+ руб./месяц

Рекомендации по провайдерам:

  • Hetzner: Хорошее соотношение цена/качество, NVMe SSD
  • DigitalOcean: Стабильность, хорошая документация
  • AWS EC2: Масштабируемость, множество опций
  • Yandex Cloud: Для российских пользователей, хорошая локализация

5.2. Выделенный сервер (Dedicated)

Минимальные требования (10 пользователей)

  • Конфигурация: 2 ядра, 4 ГБ RAM, 100 ГБ SATA SSD
  • Стоимость: \~3 000-5 000 руб. /месяц

Рекомендуемые требования (100 пользователей без нейросетей)

  • Конфигурация: 4 ядра, 16 ГБ RAM, 500 ГБ NVMe SSD
  • Стоимость: \~8 000-15 000 руб./месяц

Рекомендуемые требования (100 пользователей с нейросетями)

  • Конфигурация: 8 ядер, 32 ГБ RAM, 1 ТБ NVMe SSD
  • Стоимость: \~25 000-40 000 руб./месяц

Рекомендации:

  • Выделенный сервер обеспечивает предсказуемую производительность
  • Нет проблем с "шумными соседями" (noisy neighbors)
  • Полный контроль над ресурсами

5.3. Локальный сервер

Минимальные требования (10 пользователей)

  • Физический сервер: Мини-ПК или сервер начального уровня
  • Конфигурация: 2 ядра, 4 ГБ RAM, 100 ГБ SSD
  • Сетевое подключение: 100 Мбит/с

Рекомендуемые требования (100 пользователей без нейросетей)

  • Физический сервер: Сервер среднего уровня (1U или 2U)
  • Конфигурация: 4 ядра, 16 ГБ RAM, 500 ГБ NVMe SSD
  • Сетевое подключение: 1 Гбит/с
  • Охлаждение: Адекватное охлаждение для стабильной работы
  • Резервное питание: UPS рекомендуется

Рекомендуемые требования (100 пользователей с нейросетями)

  • Физический сервер: Сервер высокого уровня (2U или выше)
  • Конфигурация: 8 ядер, 32 ГБ RAM (рекомендуется 64 ГБ), 1 ТБ NVMe SSD
  • Сетевое подключение: 1 Гбит/с (рекомендуется 10 Гбит/с)
  • Охлаждение: Профессиональное охлаждение (серверные стойки)
  • Резервное питание: UPS обязательно
  • Мониторинг: Датчики температуры, мониторинг оборудования

Рекомендации:

  • Использование серверного оборудования (Dell, HP, Supermicro)
  • ECC память для предотвращения ошибок
  • RAID 1 или RAID 10 для надежности (если несколько дисков)
  • Регулярное резервное копирование

6. Операционная система

6.1. Рекомендуемая ОС

Ubuntu 22.04 LTS (рекомендуется)

  • Долгосрочная поддержка до 2027 года
  • Хорошая поддержка всех необходимых пакетов
  • Стабильность и безопасность
  • Подробная документация

Альтернативы:

  • Ubuntu 20.04 LTS (поддержка до 2025 года)
  • РЭД ОС 8+

6.2. Требования к системе

  • Архитектура: x86_64 (AMD64)
  • Минимальная версия ядра: Linux 5.15+
  • Поддержка systemd: Обязательно (для управления сервисами)
  • Поддержка Docker: Опционально (для контейнеризации)

7. Программное обеспечение

7.1. Обязательные компоненты

  • Python: 3.10+ (рекомендуется 3.11 или 3.12)
  • PostgreSQL: 14+ (рекомендуется 16 или 18)
  • Redis: 5.0+ (рекомендуется 7.0+)
  • Nginx: 1.18+ (рекомендуется последняя стабильная версия)
  • Gunicorn: 21.2.0+ (устанавливается через pip)
  • Daphne: 4.2.0+ (устанавливается через pip)
  • Celery: 5.3.4+ (устанавливается через pip)

7.2. Дополнительные компоненты

  • Tesseract OCR: Для обработки изображений
  • Poppler: Для работы с PDF (pdf2image)
  • antiword: Для обработки старых .doc файлов
  • unrtf: Для обработки RTF файлов

8. Резюме по сценариям

Сценарий 1: 10 пользователей (минимальные требования)

Компонент Требование
CPU 2 ядра, 2.0 GHz+
RAM 4 ГБ
Диск 50-100 ГБ SATA SSD, 5,000+ IOPS
Сеть 100 Мбит/с
Хостинг VPS

Сценарий 2: 100 пользователей без нейросетей

Компонент Требование
CPU 4 ядра, 2.5 GHz+
RAM 16 ГБ
Диск 200-500 ГБ NVMe SSD, 20,000+ IOPS
Сеть 1 Гбит/с
Хостинг VPS

Сценарий 3: 100 пользователей с нейросетями

Компонент Требование
CPU 8 ядер, 3.0 GHz+, AVX2
RAM 32 ГБ (рекомендуется 64 ГБ)
Диск 500 ГБ-1 ТБ NVMe SSD, 100,000+ IOPS
Сеть 1 Гбит/с (рекомендуется 10 Гбит/с)
Хостинг VDS

9. Дополнительные рекомендации

9.1. Масштабирование

При превышении нагрузки рекомендуется:

  1. Горизонтальное масштабирование:
  2. Разделение на несколько серверов (приложение, БД, Redis)
  3. Использование балансировщика нагрузки
  4. Репликация PostgreSQL
  5. Вертикальное масштабирование:
  6. Увеличение CPU, RAM, диска на текущем сервере
  7. Оптимизация конфигурации PostgreSQL и Redis

9.2. Мониторинг

Рекомендуется настроить мониторинг:

  • Использование CPU, RAM, диска
  • Производительность PostgreSQL (медленные запросы)
  • Производительность Redis
  • Логи приложения (Django, Celery)
  • Доступность сервисов

9.3. Резервное копирование

Обязательно настроить:

  • Ежедневное резервное копирование PostgreSQL
  • Резервное копирование медиа файлов
  • Хранение резервных копий на отдельном сервере/хранилище

9.4. Безопасность

  • Регулярное обновление системы и пакетов
  • Настройка файрвола (UFW)
  • Использование SSL/TLS для HTTPS
  • Ограничение доступа к административным интерфейсам
  • Регулярный аудит безопасности

10. Примечания

  • Все требования указаны для одного сервера (монолитное развертывание)
  • При разделении на несколько серверов требования могут отличаться
  • Требования основаны на типичной нагрузке и могут варьироваться в зависимости от использования
  • Рекомендуется проводить нагрузочное тестирование перед развертыванием в продакшене
  • Для критически важных систем рекомендуется закладывать запас ресурсов 20-30%