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

Достигайте времени отклика менее 100 мс с Smart Money API. Освойте кэширование, пул соединений, пакетные операции и оптимизацию запросов для максимальной пропускной способности.

Опубликовано 21 марта 2026 17 мин чтения Производительность

Обзор производительности

Smart Money API оптимизирован для низкой задержки и высокой пропускной способности. Достигайте максимальной производительности, внедряя рекомендуемые паттерны на стороне вашей интеграции.

Уровни оптимизации производительности:

  • Кэширование — Локальное и CDN-кэширование уменьшает запросы к источнику
  • Пул соединений — Повторное использование соединений, снижение накладных расходов
  • Пакетные операции — Объединение нескольких запросов в один
  • Оптимизация запросов — Запрашивайте только нужные данные
  • Асинхронность/Параллелизм — Обработка нескольких запросов одновременно

Целевые показатели производительности: P95 задержка <100 мс, P99 <500 мс, 99.9% времени доступности с уровнем ошибок <0.1%.

Стратегии кэширования

Кэширование ответов

Локальный кэш
// Учитывайте заголовки Cache-Control
const cache = new Map();
async function cachedFetch(url) {
const cached = cache.get(url);
if (cached && !cached.isExpired) {
return cached.data;
}
const response = await fetch(url);
const ttl = parseCacheControl(response.headers);
cache.set(url, { data: response, expiry: ttl });
return response;
}

Инвалидация кэша

  • Данные о накоплении китов: TTL 5 минут
  • Ставки финансирования: TTL 1 минута
  • Данные OHLCV: TTL 1 час
  • Исторические данные: TTL 24 часа
Получите ваш API-ключ за 30 секунд

Готовы к разработке? Получите бесплатный API-ключ (100 вызовов/день, без карты) и начните получать данные о китах, финансировании и ончейн-данных в реальном времени.

Получите ваш API-ключ →

Пул соединений

Повторное использование HTTP-соединений

Пул соединений
// HTTP Agent в Node.js с пулом
const http = require('http');
const https = require('https');
const httpAgent = new http.Agent({
keepAlive: true,
maxSockets: 50,
maxFreeSockets: 10
});
const httpsAgent = new https.Agent({
keepAlive: true,
maxSockets: 50,
maxFreeSockets: 10
});
// Используйте агенты в запросах
fetch(url, { agent: httpsAgent });

Настройки соединения

Параметр Рекомендуемое значение Обоснование
maxSockets 50-100 Баланс между параллелизмом и использованием ресурсов
maxFreeSockets 10-20 Сохранять неиспользуемые соединения для повторного использования
keepAliveTimeout 60000мс Соответствие таймауту сервера

Пакетные операции

Объединение запросов

Пакетный запрос
// Вместо нескольких запросов
// GET /whales?asset=BTC
// GET /whales?asset=ETH
// GET /whales?asset=SOL
// Используйте один пакетный запрос
GET /v1/whales?asset=BTC,ETH,SOL
// ~200мс сохранено по сравнению с 3 последовательными запросами

Ограничения пакетных запросов

  • Максимум символов на запрос: 100
  • Максимальный временной диапазон: 365 дней
  • Максимум результатов: 10,000 строк

Оптимизация запросов

Оптимизация запросов

  • Указывайте поля — Запрашивайте только нужные поля
  • Используйте фильтры — Уменьшайте размер ответа с помощью фильтров
  • Пагинация — Используйте параметр limit, а не offset
  • Временные интервалы — Запрашивайте только нужные данные
Оптимизированный запрос
// Менее эффективно: Много данных
GET /v1/whales?lookback=90d&limit=10000
// Более эффективно: Конкретные данные
GET /v1/whales?
asset=BTC&
metric=accumulation&
lookback=7d&
limit=100

Сжатие ответов

Gzip-сжатие

Запрос сжатия
// Включите сжатие в запросах
fetch(url, {
headers: {
'Accept-Encoding': 'gzip, deflate'
}
});
// API автоматически сжимает данные, если поддерживается
// Типичное сжатие: уменьшение размера на 70-80%

Экономия за счёт сжатия

Тип данных Без сжатия Сжатые Экономия
JSON-ответы 500KB 85KB 83%
Большие таблицы 2MB 350KB 82%

Асинхронные/параллельные паттерны

Конкурентные запросы

Параллельные запросы
// Неэффективно: последовательно
const btc = await fetch('/whales/BTC');
const eth = await fetch('/whales/ETH');
const sol = await fetch('/whales/SOL');
// Общее время: ~300мс
// Эффективно: параллельно
const [btc, eth, sol] = await Promise.all([
fetch('/whales/BTC'),
fetch('/whales/ETH'),
fetch('/whales/SOL')
]);
// Общее время: ~100мс (в 3 раза быстрее!)

Метрики производительности

Ключевые метрики

Метрика Цель Измерение
P50 Задержка <50ms Медианное время ответа
P95 Задержка <100ms 95-й перцентиль
P99 Задержка <500ms 99-й перцентиль
Пропускная способность >1000 req/s Запросов в секунду

Мониторинг производительности

Мониторинг производительности
// Отслеживание времени ответа
const start = performance.now();
const response = await fetch(url);
const duration = performance.now() - start;
// Логирование для анализа
console.log(`Запрос занял ${duration}мс`);

Бенчмаркинг

Нагрузочное тестирование

Проведите бенчмаркинг интеграции для выявления узких мест:

  • Инструменты: Apache Bench, wrk или Locust
  • Тестируйте с реалистичным уровнем параллелизма
  • Измеряйте распределение задержек, а не только среднее
  • Тестируйте с прогретым и холодным кешем

Рекомендации по оптимизации

Быстрые улучшения

  1. Включите пул HTTP-соединений (ускорение в 1-5 раз)
  2. Реализуйте локальное кеширование (ускорение в 10-50 раз для повторных запросов)
  3. Используйте пакетные операции (сокращение запросов в 2-5 раз)
  4. Включите gzip-сжатие (сокращение трафика в 3-5 раз)

Продвинутая оптимизация

  1. Реализуйте CDN-кеширование для исторических данных
  2. Используйте пулы соединений с БД для локального кеширования
  3. Реализуйте паттерн Circuit Breaker
  4. Используйте потоковые ответы для больших наборов данных

Достижение максимальной производительности

Smart Money API создан для скорости. Реализуйте эти стратегии оптимизации для задержки менее 100мс и максимальной пропускной способности.

См. тарифы производительности
Тарифы Pro и Enterprise включают расширенные функции кеширования и производительности.

Связанные ресурсы

Начните бесплатно — 100 вызовов/день, без карты

Получайте данные о потоках китов, фандинге, открытом интересе и ончейн-данных с 3 бирж через один API. Бесплатный тариф, без кредитной карты, можно обновить в любое время.

Начните бесплатно →
Попробуйте консоль API в реальном времени → (аккаунт не требуется)