---
sidebar_label: "Оптимизация производительности"
title: "Производительность - CyberGo HTTPC | Пресеты и параллелизм"
description: "Руководство по производительности HTTPC: сравнение пресетов Default/Secure/Performance/Minimal, тюнинг пула и таймаутов и высоконагруженные паттерны."
sidebar_position: 1
---

# Оптимизация производительности

## Сравнение предустановок конфигурации

| Метрика | Default | Secure | Performance | Minimal |
|---------|---------|--------|-------------|---------|
| Таймаут Request | 180s | 15s | 60s | 180s |
| MaxIdleConns | 50 | 20 | 100 | 10 |
| MaxConnsPerHost | 10 | 5 | 20 | 2 |
| MaxRetries | 3 | 1 | 3 | 0 |
| MaxResponseBodySize | 10MB | 5MB | 50MB | 1MB |
| HTTP/2 | Вкл | Вкл | Вкл | Вкл |
| Cookies | Выкл | Выкл | Вкл | Выкл |
| Защита SSRF | Вкл | Вкл | Вкл | Вкл |
| FollowRedirects | Вкл | Выкл | Вкл | Выкл |

## Выбор по сценарию

| Сценарий | Рекомендованная предустановка | Рекомендации по настройке |
|----------|-------------------------------|--------------------------|
| Обычные веб-сервисы | Default | - |
| Обработка URL от пользователей | Secure | - |
| Внутренние микросервисы с высокой нагрузкой | Performance | Увеличить MaxIdleConns |
| Одноразовые скрипты | Minimal | - |
| Сервис загрузки файлов | Performance | Увеличить MaxResponseBodySize |
| Финансовые/медицинские API | Secure + пользовательская | Добавить промежуточное ПО аудита |

```go
// Сценарий высокой пропускной способности
client, _ := httpc.New(httpc.PerformanceConfig())

// Тонкая настройка на основе предустановки
cfg := httpc.PerformanceConfig()
cfg.Timeouts.Request = 120 * time.Second
cfg.Connection.MaxIdleConns = 200
client, _ := httpc.New(cfg)
```

## Повторное использование пула объектов

Внутри HTTPC переиспользует объекты ответов движка и построители строк через sync.Pool, снижая нагрузку на GC; Result создаётся заново для каждого запроса и утилизируется GC:

```go
result, err := client.Get(url)
if err != nil {
    return err
}
// Result создаётся заново для каждого запроса, утилизируется GC, ручное освобождение не требуется
```

:::tip
В высоконагруженных сценариях повторное использование пула объектов значительно снижает нагрузку на GC.
:::

## Антипаттерны производительности

| Антипаттерн | Причина | Правильный подход |
|-------------|---------|-------------------|
| Создание клиента на каждый запрос | Соединения не переиспользуются | Глобальное переиспользование клиента |
| Слишком большой MaxResponseBodySize | Высокое потребление памяти | Установите разумные ограничения |
| Использование result.String() на горячих путях | Накладные расходы на построение строки | Используйте Body() напрямую |

## Что дальше

- [Пул соединений и прокси](./connection-pool) — выбор параметров пула соединений, настройка прокси и DoH
- [Обработка ошибок](./error-handling) — стратегия разделения таймаутов
- [Обзор безопасности](../security/) — баланс безопасности и производительности
