Методы
PHP код
?
nikic/PHP-Parser
Источники: Легаси
Slide 32
Slide 32 text
Методы
PHP код
xhprof
nikic/PHP-Parser
Источники: Легаси
Slide 33
Slide 33 text
Недостатки xhprof
• Требует изменения php кода
• Дублирование данных
• Человеческий фактор
• Сложность изменения
Источники: Легаси
Slide 34
Slide 34 text
Методы: требования
• Минимальные накладные расходы
• Не требует изменения php кода
• Работает везде (fpm / cli)
• Обрабатывает форки
• Сэмплирование из коробки
• Форсирование из кода
Источники: Легаси
Slide 35
Slide 35 text
Методы: требования
• Минимальные накладные расходы
• Не требует изменения php кода
• Работает везде (fpm / cli)
• Обрабатывает форки
• Сэмплирование из коробки
• Форсирование из кода
funcmap.so
Источники: Легаси
Slide 36
Slide 36 text
Принцип работы
• RINIT
• выставляем флаг сбора данных
• создаем HashTable
• инициализируем таймер
• MSHUTDOWN
• пишем данные из HashTable
• Подменяем zend_execute_ex
Источники: Легаси
Накладные расходы
time
rps
25% 50% 100%
Источники: Легаси
Slide 39
Slide 39 text
Ложный результат
• Увеличить вероятность
• Обработка ошибок
• Дополнительная валидация
• Ручное маркирование
Источники: Легаси
Slide 40
Slide 40 text
Альтернативы
krakjoe/tombs
• Отсутствие семплирования
• Разделяемая память
• Плохо учтена работа в cli
• Сложность постобработки
Источники: Легаси
Slide 41
Slide 41 text
github.com/badoo/
funcmap
Slide 42
Slide 42 text
Источники: Легаси
Slide 43
Slide 43 text
Источники: Легаси
Slide 44
Slide 44 text
Выводы
Slide 45
Slide 45 text
• Продумайте флоу удаления a/b тестов
• Контролируйте устаревания нативных клиентов
• Чистота API ведет к упрощению кода
• Можно автоматизировать процесс поиска мертвого кода
Выводы
Slide 46
Slide 46 text
• github.com/badoo/funcmap
• Highload: Как мы поддерживаем 100 разных версий
клиентов в Badoo / Ярослав Голуб
• Habr: Как устроено сплит-тестирование в Badoo
• Tombs by Joe Watkins
Ссылки