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

strace на продовом процессе

Вопрос

Почему strace -f -p <pid> опасно запускать на нагруженном продовом процессе?

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

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

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

Коротко

Правильный ответ: ptrace останавливает процесс на каждом системном вызове. ptrace переключает контекст на каждом системном вызове трассируемого процесса, и под нагрузкой сервис может замедлиться очень сильно.

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

  1. strace требует перезапуска процесса с флагом трассировки
  2. ptrace останавливает процесс на каждом системном вызовеправильный ответ
  3. strace закрывает открытые файлы и сокеты процесса при подключении
  4. strace работает только в привилегированных контейнерах и роняет под

Разбор

ptrace переключает контекст на каждом системном вызове трассируемого процесса, и под нагрузкой сервис может замедлиться очень сильно. Для прода безопаснее perf и eBPF-инструменты (bpftrace, BCC), которые агрегируют данные в ядре. Перезапуск strace не нужен, файлы не трогает, работает с любым процессом.

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

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