Выбор ответа Senior Производительность и профилирование обновлено

Медленно, а CPU свободен

Вопрос

Сервис отвечает медленно, загрузка CPU 15%, on-CPU профиль ничего интересного не показывает. Куда смотреть?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: На ожидание: off-CPU профиль, блокировки, I/O, зависимости. On-CPU профиль видит только время, когда поток выполняется на процессоре.

Варианты ответа

  1. Увеличить число ядер и лимит CPU пода
  2. Профиль врёт при низкой загрузке, нужно снять его ещё раз под нагрузкой
  3. Снизить уровень логов, запись в stdout тормозит ответы
  4. На ожидание: off-CPU профиль, блокировки, I/O, зависимостиправильный ответ

Разбор

On-CPU профиль видит только время, когда поток выполняется на процессоре. Если запросы ждут базу, блокировку, свободное соединение или сеть, процессор простаивает. Off-CPU анализ (например, offcputime из BCC), профили блокировок (mutex, block в Go) и трейсы показывают это ожидание. Больше ядер не помогут ждать быстрее.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.