Выбор ответа Senior Производительность и профилирование обновлено
strace на продовом процессе
Вопрос
Почему strace -f -p <pid> опасно запускать на нагруженном продовом процессе?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: ptrace останавливает процесс на каждом системном вызове. ptrace переключает контекст на каждом системном вызове трассируемого процесса, и под нагрузкой сервис может замедлиться очень сильно.
Варианты ответа
- strace требует перезапуска процесса с флагом трассировки
- ptrace останавливает процесс на каждом системном вызовеправильный ответ
- strace закрывает открытые файлы и сокеты процесса при подключении
- strace работает только в привилегированных контейнерах и роняет под
Разбор
ptrace переключает контекст на каждом системном вызове трассируемого процесса, и под нагрузкой сервис может замедлиться очень сильно. Для прода безопаснее perf и eBPF-инструменты (bpftrace, BCC), которые агрегируют данные в ядре. Перезапуск strace не нужен, файлы не трогает, работает с любым процессом.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.