Slide 1

Slide 1 text

eBPF with PHP をさわる 2025/01/29 第172回PHP勉強会@東京

Slide 2

Slide 2 text

自己紹介  ちひろ  株式会社モリサワ  X: @chiroruxxxx

Slide 3

Slide 3 text

はじめに  エンジニアが「システムを作ること」が価値になる時代は 終わりつつある?  AI・ノーコード・ローコードの出現  小学生でもブログやゲームサーバを作れる  「システムが動き続けること」は引き続き価値になる  事業会社はもちろん  受託開発でもワンストップ化が進んでいる  DevOps・SRE  エンジニアが開発もするし、運用もする  開発の段階から運用・監視を作り込む  ということで運用監視に近い話をするぞ

Slide 4

Slide 4 text

eBPF

Slide 5

Slide 5 text

eBPF  Linuxの機能で、カーネルのイベントをフックして簡単なプ ログラムを実行する機能  Macでは動きません  WSLでは・・・どうなんだろう  HyperVにくわしくない  Docker on Macではうまく動かなかった  おま環の可能性もある  だがカーネルのイベントなんていう低レイヤーはさわりたく ない  そこでUSDT!!

Slide 6

Slide 6 text

USDT  User Statically-Defined Tracing  DTrace用にイベントを発火する機能  eBPFのイベントフックに利用できる  もちろんPHPにもある

Slide 7

Slide 7 text

PHPとUSDT

Slide 8

Slide 8 text

どういうこと だってばよ PHP eBPF 処理 処理 処理 処理 イベント イベント イベント

Slide 9

Slide 9 text

デモ  やってみよう

Slide 10

Slide 10 text

デモが できなかった とき用

Slide 11

Slide 11 text

デモが できなかった とき用

Slide 12

Slide 12 text

デモが できなかった とき用

Slide 13

Slide 13 text

何が嬉しい?  PHPのコードを汚さずにPHPの動作を取得できる  PHPからログを出そうとすると、プログラムを修正する必要が ある  ステージング環境でのバグ調査に便利か?  プロダクションだと取得したデータをどこかに送るくらい?  Linuxの機能かつ非同期なのでオーバーヘッドが少ない  他のミドルウェアをまたいだ解析に  memcachedやMySQLにもUSDTがある

Slide 14

Slide 14 text

何が嬉しい?  オレオレAPMとかも作れるか?  リクエストごとにプロセスが立てばいけそう?  APMのお金が払えないときとか・・・

Slide 15

Slide 15 text

肌感  わからん  でも何かに使えそうな雰囲気はある  ワークショップに参加すれば何かわかるかもしれない

Slide 16

Slide 16 text

ピセカ  2/8(土)

Slide 17

Slide 17 text

参考  「eBPF+USDTでphpをトレースしてみる、bpftraceと RbBCCでやる」  https://dasalog.hatenablog.jp/entry/2020/04/30/094503  「超入門 よかBPF for PHPer」  https://udzura.jp/slides/2024/phpconfuk2024-preevent/