GitLabパフォーマンスモニタリング

GitLabには、GitLab 8.4から “GitLab Performance Monitoring “と呼ばれる独自のアプリケーションパフォーマンス測定システムが搭載されました。 GitLab Performance Monitoringは、Community EditionとEnterprise Editionの両方で利用できます。

この紹介とは別に、GitLabパフォーマンスモニタリングについて理解し、適切に設定するために、以下のドキュメントに目を通すことをお勧めします:

GitLabパフォーマンスモニタリング入門

GitLabパフォーマンスモニタリングでは、以下のような様々な統計情報を測定することができます:

  • トランザクション(WebリクエストまたはSidekiqジョブ)の完了にかかった時間。
  • SQLクエリの実行とHAMLビューのレンダリングに費やされる時間。
  • インスツルメンテーションされた)Rubyメソッドの実行時間。
  • Rubyオブジェクトの割り当て、特にretainされたオブジェクト。
  • プロセスのメモリ使用量や開いているファイル記述子などのシステム統計。
  • Ruby ガベージコレクションの統計。

メトリクス

2種類のメトリクスが収集されます:

  1. トランザクション固有のメトリクス。
  2. 別スレッドで一定間隔で収集されるサンプル・メトリクス。

取引メトリクス

トランザクション・メトリクスは、1つのトランザクションに関連付けられるメトリクスです。 このメトリクスには、トランザクションの継続時間、実行されたSQLクエリのタイミング、HAMLビューのレンダリングに費やされた時間などの統計が含まれます。

サンプル・メトリクス

サンプリングされたメトリクスは、単一のトランザクションに関連付けることができないメトリクスです。 例えば、ガベージ・コレクションの統計や保持されたRubyオブジェクトなどがあります。 これらのメトリクスは、一定の間隔で収集されます。 この間隔は、2つの部分から構成されます:

  1. ユーザー定義の間隔。
  2. ランダムに生成されたオフセットがインターバルの上に追加され、同じオフセットを2回続けて使用することはできません。

実際のインターバルは、定義されたインターバルの半分から半分上のインターバルの間のどこにでも設定できます。 例えば、ユーザーが定義したインターバルが15秒の場合、実際のインターバルは7.5秒から22.5秒の間のどこにでも設定できます。インターバルは、一度生成されるとプロセスの寿命の間再利用されるのではなく、サンプリング実行ごとに再生成されます。