# Pinpoint ## 概要 Pinpoint は [[Mike Y. Chen]]、[[Emre Kıcıman]]、Eugene Fratkin、[[Armando Fox]]、[[Eric Brewer]](UC Berkeley / Stanford University)が DSN 2002 で発表した、大規模・動的インターネットサービス向けの問題判定フレームワークである。 静的依存モデルを必要とせず、J2EE ミドルウェア計装によるリクエストトレーシングと UPGMA クラスタリングを組み合わせ、アプリケーション知識なしで障害コンポーネントを特定する。 ## 主な特徴 - **アプリケーション非侵入**: J2EE アプリケーション自体を変更せず、ミドルウェア(EJB・JSP・JSP タグ層)を計装するだけで動作する - **動的リクエストトレーシング**: クライアントリクエストごとにユニーク ID を付与し、通過するコンポーネントをすべて記録する - **成功/失敗対比によるクラスタリング**: 失敗リクエストに使われたコンポーネントと成功リクエストに使われたコンポーネントを UPGMA + ジャカール係数で比較し、障害コンポーネントを絞り込む - **障害検知の二重化**: 内部(例外ログ)と外部(Snifflet による L7 パケットスニフィング)の両方で障害を検知する ## 評価結果 - 単一コンポーネント障害: 正解率 80〜90%、偽陽性率 40〜50% - 単純な依存関係チェックより適合率が大幅に優れる(偽陽性率 40〜50% 対 80%) - 実行時オーバーヘッド: スループット 8.4% 低下(J2EE PetStore での計測) ## 限界 - 常に一緒に使われる密結合コンポーネント群は個別に区別できない - 共有状態を通じた非独立リクエスト障害には未対応 - 単一ノード実装のため、マシン境界をまたぐ分散トレーシングは将来課題 ## 出典 - [[@2002__DSN__Pinpoint - Problem Determination in Large, Dynamic Internet Services]]