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

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

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

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

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

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

メトリクス

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

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

トランザクション・メトリクス

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

サンプリングされたメトリクス

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

  1. ユーザー定義の間隔。
  2. ランダムに生成されたオフセットは、間隔の上に追加されます。

実際のインターバルは、定義されたインターバルの半分から半分上のインターバルの間であればどこでもかまいません。例えば、ユーザー定義のインターバルが15秒の場合、実際のインターバルは7.5秒から22.5秒の間のどこかになります。インターバルは、1回だけ生成され、プロセスの有効期間中再利用されるのではなく、サンプリング実行ごとに再 生成されます。

ユーザー定義の間隔は、環境変数によって指定することができます。以下の環境変数が認識されます:

  • RUBY_SAMPLER_INTERVAL_SECONDS
  • DATABASE_SAMPLER_INTERVAL_SECONDS
  • ACTION_CABLE_SAMPLER_INTERVAL_SECONDS
  • PUMA_SAMPLER_INTERVAL_SECONDS
  • THREADS_SAMPLER_INTERVAL_SECONDS
  • GLOBAL_SEARCH_SAMPLER_INTERVAL_SECONDS