Upgrade to Pro — share decks privately, control downloads, hide ads and more …

しつこくじわじわパフォーマンスチューニング

 しつこくじわじわパフォーマンスチューニング

TechFeed Experts Night 2022-06-07 登壇資料

Toshiaki Baba
Twitter: @netmarkjp

株式会社X-Tech 5 取締役CTO
https://x-tech5.co.jp/

株式会社iCARE技術顧問(インフラ)
https://dev.icare.jpn.com/tech_adv/

Toshiaki Baba

June 05, 2023
Tweet

More Decks by Toshiaki Baba

Other Decks in Technology

Transcript

  1. TechFeed Experts Night 2022-06-07
    Toshiaki Baba
    Twitter: @netmarkjp
    株式会社X-Tech 5 取締役CTO
    https://x-tech5.co.jp/
    株式会社iCARE技術顧問(インフラ)
    https://dev.icare.jpn.com/tech_adv/
    しつこくじわじわパフォー
    マンスチューニング
    Disclaimer
    ● おもに「サーバサイドのパフォーマンス」を取り扱います
    ● 「サービスが遅い・重い」と言ったときは、主に「レイテンシが
    高い」という意図です
    ● モニタリングツールの基本知識がDatadog(とAmazon
    CloudWatchと、Nagios・Cacti)に偏っているので、暗黙のう
    ちにそれらを前提にして発言するかもしれません

    View Slide

  2. 担当:Chapter 1 チューニングの基礎知識
    2

    View Slide

  3. 「いれたはいいけどうまく使えていないDatadog」
    なんとかします:X-Tech5の「OBServe」
    3
    OBServe - 株式会社X-Tech5
    https://x-tech5.co.jp/service/observe/

    View Slide

  4. パフォーマンスでよくある問題と対策
    4
    【問題になること】
    パフォーマンス問題は致命傷にならないと気づかない
    【対策】
    継続的にしつこくモニタリングする
    パフォーマンスをモニタリ
    ングできるようになる
    課題を効率よく見つけられ
    るようになる
    致命傷になる前に発見でき
    るようになる

    View Slide

  5. パフォーマンスをモニタリングする
    5
    パフォーマンスをモニタリ
    ングできるようになる
    課題を効率よく見つけられ
    るようになる
    致命傷になる前に発見でき
    るようになる

    View Slide

  6. 前提知識:モニタリングSaaSの多くはメトリクス中心
    6
    ログ
    メトリクス
    ログ
    APM
    APM
    正規化
    マスク
    変換...
    メトリクス
    アラート
    ダッシュ
    ボード

    コンソール

    View Slide

  7. われわれの武器:ログとAPM
    ● ログ
    ○ その要素の処理単位で計測・確認できる
    ○ プログラムの処理インターフェース単位で扱う(例:アクセスログならURL)
    ○ 全量調査なので「特定のコレ」を見つけ出せる
    ● APM(Application Performance Monitoring)
    ○ 複数要素にまたがって一気通貫で計測・確認できる ※マイクロサービスじゃなくても
    ○ プログラムの内部情報を扱える(例:コントローラのメソッドや呼び出したときの引数)
    ○ サンプリング調査なので「多くの母数を持つ前提で傾向を把握する」のが前提
    7
    お勧め:「よくわからないなら、まずはAPM」

    View Slide

  8. アプリケーションにAPMを追加する
    ● 「計装する」(Instrument)と呼ぶ
    ● SaaSベンダのライブラリ or OpenTelemetryを使う
    ○ よくわからないならSaaSのドキュメントの通りにSaaSのライブラリを使ってSaaSのサポート
    をうけるのがよい
    ○ OpenTelemetryで計装しておくと後からSaaSが変更しやすい
    ● 利用しているプログラム言語やフレームワーク・ライブラリによっては、追
    加でライブラリを読み込む程度
    ○ Python、Ruby、Java、Node(JavaScript/TypeScript)あたりはたぶん楽
    ○ Goは少しコード修正が必要かも
    8
    アプリケーション
    プログラム
    lib
    モニタリング
    エージェント
    モニタリングSaaS

    View Slide

  9. 効率よく見つけたい
    9
    パフォーマンスをモニタリ
    ングできるようになる
    課題を効率よく見つけられ
    るようになる
    致命傷になる前に発見でき
    るようになる

    View Slide

  10. 効率よく見つけたい:目星をつける
    ● ユーザ、カスタマーサクセス担当、プロダクトオーナーに聞くと「ここ
    が!」というのが出てくることが多いので、まずはそこからがベスト
    ● ISUCON本ではアクセスログをalpで分析
    ● DatadogならAPMのServicesで分析(APMをもとにしたメトリクス)
    ○ ISUCONのように「リソース逼迫の要因を見つけたい」状況ではTOTAL TIMEに着目
    ○ REQUESTSが一定以上ありP50やP90レイテンシが高いものに着目していくとよい
    10

    View Slide

  11. 見つけたら
    ● 短期・中期で傾向が変化したか確認する
    ● レイテンシの分散を確認して狙い所を定める
    11

    View Slide

  12. 見つけたらTraceを詳しく見る
    ● 横に長い箱はどれか
    ● 箱(Span)の数、繰り返しパターン
    ● レイテンシの分散を確認して狙い所を定める
    12
    https://datadog-docs.imgix.net/images/tracing/index/ConnectLogsWithTraces.b1310bb21582381d3bfb1ec7dd47031f.png

    View Slide

  13. 継続的にしつこくモニタリング
    13
    パフォーマンスをモニタリ
    ングできるようになる
    課題を効率よく見つけられ
    るようになる
    致命傷になる前に発見でき
    るようになる

    View Slide

  14. 継続的にしつこく
    ● 定点観測を確立しましょう
    ○ 習慣の力も使うが、土台と詰めは『根性と執念』
    ● なんだかんだ言ってみんなできない(定着に課題がある)からサービス化し
    たのが「OBServe」
    ● お問い合わせいただくと、ばばが出てきます
    https://x-tech5.co.jp/service/observe/
    14

    View Slide

  15. おまけ:自己紹介
    馬場俊彰(ばばとしあき) Twitter: @netmarkjp
    株式会社X-Tech5 取締役 CTO、株式会社iCARE技術顧問
    運用エンジニアリング/DevOps/SRE/コンサルティング/組織構築/事業運営...
    電気通信大学人間コミュニケーション学科(2004年卒)
    →社会人(SCC→ハートビーツ→X-Tech5)
    →産業技術大学院大学(AIIT)情報アーキテクチャ専攻(2011年卒)
    主な守備範囲:Webシステムのインフラ・ミドルウェア全般、モニタリング、
    チューニング、プログラミング(Python、Go)
    15
    Amazon著者ページ https://www.amazon.co.jp/%E9%A6%AC%E5%A0%B4-%E4%BF%8A%E5%BD%B0/e/B004Y4SUBY

    View Slide