Skip to content

Latest commit

 

History

History
640 lines (454 loc) · 21 KB

slides.md

File metadata and controls

640 lines (454 loc) · 21 KB
titleTemplate theme background highlighter lineNumbers info css hideInToc
%s
seriph
shiki
true
false
unocss
true

L'état des profilers PHP en 2024

Introduction, explication et qui sont les acteurs en place ?


layout: center hideInToc: true

De quoi on parle ?


layout: center class: text-center src: ./pages/presentations.md


layout: center title: La petite histoire level: 1

La petite histoire


layout: section title: La définition level: 1

La définition

Le profilage de code


layout: quote hideInToc: true

Getting started with profiling can be intimidating, especially because the term “profiler” is used to refer to so many specific types of tools. - Sentry


layout: center hideInToc: true


layout: section hideInToc: true

Historique

Le premier date de 1970 !


layout: section title: Fonctionnement level: 2

Fonctionnement


layout: two-cols-header hideInToc: true

::left::

::right::


layout: section hideInToc: true

Comment on visualise nos résultats ?


layout: center hideInToc: true


layout: iframe url: https://svgur.com/i/169a.svg hideInToc: true


layout: section hideInToc: true


layout: section hideInToc: true

Flamegraph 🔥


layout: two-cols-header hideInToc: true

Schéma sampling

::right::

Speedscore (visualisation)


layout: image image: /flamegraph_wiki_uptodown_zoom.png


layout: center hideInToc: true

1,6 milliard/j

20k/sec

3M de trace par jour


layout: section hideInToc: true


layout: section level: 1

Profilers PHP les plus utilisés en 2024


layout: section hideInToc: true

Blackfire


layout: center hideInToc: true

L'argent & | l'administratif..


layout: section level: 1

Cas d'utilisation courants et exemples de mise en œuvre en production


layout: center hideInToc: true


layout: section hideInToc: true

Pyroscope


layout: section hideInToc: true

Speedscope


layout: section hideInToc: true

Le messi : Sentry


layout: image image: /sentry_ui.png hideInToc: true


layout: section hideInToc: true

Récap

Tool Call graph Flame graph Autre visualisation Historisation Open source
Excimer-ui
Pyroscope
Blackfire
Sentry
Outil cachegrind locaux

layout: center hideInToc: true


layout: section level: 1

Cas d'utilisation courants et exemples de mise en œuvre en environnement local


layout: center hideInToc: true

XDEBUG

sudo apt-get install php-xdebug
install-php-extensions xdebug
xdebug.mode = profile
xdebug.output_dir = /app/public/xdebug
xdebug.start_with_request = trigger // démarre avec un header

XHPROF

install-php-extensions xhprof
xhprof.output_dir = /app/public/xhprof
xhprof_enable();
register_shutdown_function(function () {
    $data = xhprof_disable();
    file_put_contents('public/xhprof/'. uniqid() . '.yourapp.xhprof', serialize($data));
});

layout: section hideInToc: true

XDebug

docker run --rm -v ./public/xdebug:/tmp -p 800:80 jokkedk/webgrind:latest


layout: default hideInToc: true

XDebug


layout: iframe url: https://svgur.com/i/169a.svg hideInToc: true


layout: default title: Visualisation de XHProf level: 2

XHProf & XHGui


layout: default title: Impact sur les performances level: 1

Impact sur les performances (échantillonage vs instrumentation)

Env Pas de profiling Excimer Xhprof Xdebug
Dev ~1,76sec ~1,78sec (1.1%) ~2,77sec (57.4%) ~5,55sec (215.3%)
Prod ~665ms ~670ms (0.98%) ~1200ms (80.5%) ~2200ms (230.8%)

layout: center title: Mais pourquoi profiler en production ? level: 1

Pourquoi profiler en production ?

Difficulté à être iso

Extensions

Données

Variable d'environnement

Dépendances


layout: section title: Perspectives d'avenir des profilers après 2024 & bilan level: 1

Perspectives d'avenir des profilers après 2024 & bilan

Sentry & excimer c'est tip top !


layout: section hideInToc: true

Self hosted != gratuit


layout: two-cols-header hideInToc: true

Pour faire des retours sur les slides

::right::

Pour retrouver la conf


layout: end hideInToc: true