Вступить в клуб →
сложнаявопросПроизводительность и низкие задержки

p99 задержки подскакивает до 80 мс, хотя медиана — 0,3 мс

Обработчик заявок пишет лог каждой операции:

void Gateway::onOrder(const Order& o) {
    std::lock_guard lk(logMutex_);
    logFile_ << format(o) << '\n';
    logFile_.flush();
    // ... обработка
}

Медиана задержки 0,3 мс, но p99 периодически уходит в 50–80 мс, и всплески совпадают по времени во всех 8 рабочих потоках. На сервере параллельно идёт резервное копирование на тот же диск. Что изменить?

  • Писать лог асинхронно из отдельного потока
  • Увеличить число рабочих потоков до 32
  • Заменить std::mutex на std::recursive_mutex
  • Перейти с std::ofstream на fprintf

🔒 Проверка ответа — для участников клуба

  • Проверка ответа
  • Подсказка, если застряли
  • Разбор с объяснением, почему так
  • Прогресс по всем задачам и виртуальные собеседования
Зарегистрироваться →

Регистрация занимает минуту

Другие задачи раздела