2023/08/25のフレッシュメンLT #0で発表した資料になります。 https://connpass.com/event/285559/
アプリケーションパフォーマンスの計測と改善の方法を勉強している話Takumi Kataseフレッシュメン夏祭りLT #0
View Slide
自己紹介● Takumi KataseTwitter: @devoc_● SRE● Linux/Go/Terraform/Vim● 🍜 / Game / Anime
アジェンダ● ベンチマーク● プロファイル● 分散トレース
ベンチマークHTTP RequestsServer
ベンチマークServerOutput● Latency● Throughput● etc . . .
ab - Apache HTTP server benchmarking toolhttps://httpd.apache.org/docs/2.4/programs/ab.html
ab - Apache HTTP server benchmarking tool
負荷を観察するHTTP RequestsServer👀システムリソースの状態を観察する
top - display Linux processes
top - display Linux processes👈
観察結果から次の行動を決定する● MySQLのプロセスがCPUを多く(90%くらい)使っている● MySQLがボトルネックになってそう● スロークエリ調べてみよう● . . . . . .
サイクルを回すベンチマーク解析改善
Other tools● k6○ シナリオを記述○ 実際の利用状況に近い負荷を与えられる● perf○ Linuxのプロファイラ○ 超多機能。よりハードウェアに近いCPUの振る舞いを分析できる
https://gihyo.jp/book/2022/978-4-297-12846-3
プロファイルシステムパフォーマンスの分野では、プロファイリング(profiling)とは、サンプリングツールの使用という意味である。計測値のサブセット(サンプル)を取り、対象のおおよその姿を描くのである。https://www.oreilly.co.jp/books/9784814400072/
CPU プロファイル
CPU プロファイルmain()addAB()getA() getB()
CPU プロファイルmain()addAB()getA() getB()1s1s0.3s 0.6s
スタックトレーススレッドスタックレジスタプログラムカウンタプロセススレッド スレッド
スタックトレーススレッドスタックレジスタプログラムカウンタプロファイラプロファイラがスタック内に保存されているリターンアドレスを解析する
package “net/http/pprof”https://pkg.go.dev/net/http/pprofPackage pprof serves via its HTTP server runtime profilingdata in the format expected by the pprof visualization tool.
package “net/http/pprof”
分散トレース分散トレースは、単に相互に関連した一連のイベントです。分散トレースシステムは、これらの関係を追跡する作業を「自動的に魔法のように」作成し、それを管理する、パッケージ化されたライブラリ を提供します。https://www.oreilly.co.jp/books/9784814400126/
OpenTelemetryhttps://opentelemetry.io/docs/what-is-opentelemetry/OpenTelemetry は、トレース、メトリクス、ログなどのテレメトリ データを作成および管理するために設計されたObservability フレームワークおよびツールキットです。
OpenTelemetryhttps://github.com/catatsuy/private-isuprivate-isu appOpenTelemetry SDK計装
Trace
OpenTelemetryprivate-isuappOpenTelemetrySDK計装