# Производительность ## Performance budgets (p95) | Метрика | Лимит | Примечание | |---------|-------|------------| | API response (без AI) | < 500ms | | | API response (с AI) | < 5s | Fallback после таймаута | | DB query (одиночный) | < 100ms | С индексом | | WebUI page load | < 2s | | | AI call | < 5s | Иначе fallback | ## Индексы БД ```sql CREATE INDEX ix_ideas_user_id ON ideas(user_id); CREATE INDEX ix_ideas_status ON ideas(status); CREATE INDEX ix_ideas_created_at ON ideas(created_at); CREATE INDEX ix_users_email ON users(email); ``` ## Connection pool ```python engine = create_async_engine( settings.database_url, pool_size=10, max_overflow=20, pool_pre_ping=True, ) ``` ## Метрики | Метрика | Тип | Описание | |---------|-----|----------| | `http_requests_total` | Counter | Всего запросов | | `http_request_duration_ms` | Histogram | Время ответа (p50/p95/p99) | | `http_errors_total` | Counter | 4xx и 5xx | | `ai_provider_calls` | Counter | Вызовы AI провайдеров | | `agent_execution_duration` | Histogram | Время выполнения агентов | **Где хранить:** в БД (таблица `agent_metrics`), в перспективе — Prometheus. ## Когда оптимизировать 1. Профилировать до оптимизации. Не гадать — измерять. 2. Оптимизировать только горячие пути (90% времени на 10% кода). 3. Кэшировать только то, что реально часто читается.