データベースとインスタンスレベルのパフォーマンス問題を分析する
データベースとインスタンスレベルのパフォーマンス問題を分析する

データベースとインスタンスレベルのパフォーマンス問題を分析する

データベースとインスタンスレベルのパフォーマンス問題を分析する

開発運用チームにとって、データベースの問題は迅速に調査されるべきものです。遅い、もしくは上手く作動しないアプリのパフォーマンス問題やエラーを解決するためには、背景となる原因がデータベースパフォーマンス、1つ以上のホストもしくはサービス、もしくはその両方に関連しているのか、分析する必要があります。
New Relic APMのトランザクショントレース遅いクエリトレースサービスマップを使用すれば、問題となっている特定のクエリ、データベースインスタンス(ホストとポート)、データベース名を調べることが可能です。New Relic APMのインスタンス レベル メトリクスで、関連のある特定のインスタンスをドリルダウンすることができます。これにより、迅速に影響を調査し、問題を解決することが可能です。

この機能へのアクセス可否はサブスクリプションレベルに依存します。

互換性と要件

New Relicは多様なデータベースおよびデータベースドライバーのインスタンスの詳細を収集します。特定のインスタンスとデータベース情報のタイプをNew Relic APMで表示できるかどうかは、データベースドライバーとNew Relicエージェントバージョンに依存します。

Go
Go agentバージョン1.4以降が必要です。全てのデータベースドライバーをサポートします。

 

Java
Java agentバージョン3.33.0以降が必要です。
下記をサポートします:
  • 互換性のあるJDBCドライバー全て
  • DataStax Cassandraドライバー2.1.2、3.0から3.1
  • Jedis Redisドライバー1.4から2.9
  • Mongo 2.12.0から2.13.3、3.1から3.3
  • Spymemcached(2.11から2.12)
例外:『getBulk』APIメソッドへの発信のインスタンスレベル情報は報告されません。

 

.NET
For .NET agent version 6.5.29.0 or higher, this datastore instance information is collected:
  • Microsoft SQL Server
  • MySQL
  • PostGreSQL
  • Oracle
  • DB2
  • Redis
This information appears in transaction traces and slow query traces. The .NET agent captures datastore instance details by default.

 

Node.js
Node.js agentバージョン1.31.0以降が必要です。
下記をサポートします:
データベース 『npm』モジュール名 最小モジュールバージョン 最小エージェントバージョン
PostgreSQL pg 0.14.0 1.31.0
Redis redis 0.8.3 1.31.0
MongoDB  mongodb  2.0.43 1.32.0
MySQL mysql 2.4.1 1.32.0
Memcached memcached 0.2.7 1.33.0

 

PHP
6.8以降のPHP agentバージョンが必要です。
下記をサポートします:
データベース エクステンション 最小エージェントバージョン
MySQL mysql 6.8
MySQL mysqli 6.8
MySQL pdo_mysql 6.8
PostgreSQL  pgsql 6.9
PostgreSQL pdo_pgsql 6.9
ホスト情報の収集を無効化するには、下記のどちらかのオプションを使用してください:
  • 『newrelic.datastore_tracer.instance_reporting.enabled to false in the newrelic.ini』を設定します。
  • 『newrelic.datastore_tracer.database_name_reporting.enabled = false』でデータベース名を削除します。

 

Python
2.72.0.52以降のPython agentバージョンが必要です。
下記をサポートします:
データベース Pythonパッケージ名 最小パッケージバージョン 最小エージェントバージョン
《PostgreSQL》 psycopg2 2.0.14 2.72.0.52
《MySQL》 MySQLdb 1.2.5 2.74.0.54
《Redis》 redis 2.6.2 2.74.0.54
《Memcaced》 python-memcached 1.51 2.76.0.55
《Elasticsearch》 elasticsearch 0.45 2.78.0.56

 

Ruby
3.17.0以降のRuby agentバージョンが必要です。
下記のORMデータベースをサポートします:
ORM データベース アダプター名 【最小エージェントバージョン
ActiveRecord 5+ PostgreSQL pg 3.17.0
MySQL mysql2 3.17.0
ActiveRecord 2.1 – 4 PostgreSQL pg 3.17.0
MySQL mysql 3.17.0
MySQL mysql2 3.17.0
また、下記の『gem』 データベースもサポートしています:
データベース Gem名 最小gemバージョン 最小エージェントバージョン
Memcached Dalli 2.6.4 3.17.1
Mongo DB mongo 2.1.0 3.17.1
Redis redis-rb 3.0.0 3.17.1

 

データストアインスタンスの詳細を使い、アプリを監視およびトラブルシュートする

下記の例を参考に、アプリケーションと関連するデータストアインスタンス間の接続のパフォーマンスを監視およびトラブルシュートしましょう。例では、アプリパフォーマンスの問題の背景にある原因がアプリケーションに関連するものなのか、データベースインスタンスの設定の問題なのか(インデックスが欠けている等)、組織のリソースなのか、それらが組み合わさったものなのかを判断する際、New Relicがどのように役立つかを記載しています。

遅いクエリトレース詳細例
Apdexが失敗しており、アプリでエンドユーザーの体験に影響しているものが何なのか確認したいとします。New Relic APMのデータベースページにて、遅いクエリがあることに気づき、データベース ベンダー ツールでさらに調べたいと考えます。
このためには、データベース名と遅いクエリが発生したインスタンスがどれか理解しておく必要があります。問題がインスタンス特有のものである可能性があるためです。例えば、問題はインデックスが欠けていることかもしれません。New Relic APMの《遅いクエリトレース》を使い、クエリパフォーマンスを見直し、データベース名とインスタンスを特定し、上手く記述されていないもしくは非効率的なクエリを特定しましょう。

APM > (選択したアプリ) > データベース > (選択したデータベース操作) > (選択した遅いクエリ) > トレース詳細:これは、特定のデータベースとインスタンスを特定した遅いクエリトレースの例です。
トランザクショントレース詳細例
アプリにパフォーマンスの問題があり、New Relic APMトランザクションページを使い、疑わしいトランザクションを特定しました。遅いトランザクションのトランザクショントレースを選択すると、データベース時間がトランザクションパフォーマンスに影響していることが分かります。
選択したトランザクショントレース詳細から、データベースアイコンを選択し、データベースクエリ情報を確認します。
すると、クエリ詳細と、クエリが実行された特定のインスタンスの両方が表示されます。ここからデータベース ベンダー ツールを使い、さらに問題を調査します。

APM > (選択したアプリ) > トランザクション > (選択したトレース) > トレース詳細:アプリのパフォーマンス問題に寄与している可能性がある特定のデータベースおよびインスタンスの情報を表示するには、データベースアイコンを選択します。
サービスマップ詳細例
環境にパフォーマンス問題があり、トラブルシュートおよび、通話アプリケーションと特定のデータベースインスタンス間のパフォーマンス問題の影響を評価したいと考えます。
APMサービスマップページを利用し、アプリの接続と依存の簡単な概要を確認します。これにはデータベースと外部サービスも含まれます。各データストアタイプ用に、マップ上に個別のノードがあります。選択したサービスマップ詳細からは、下記が可能です:
  • アプリケーションもしくは外部サービスとデータストアインスタンス間の接続の、色付けされた正常性状態を確認します。(New Relicは簡単な基準値技術を使い、過去15分にわたるパフォーマンスと、先週の平均を比較します。)
  • サービスマップ上のタイムシリーズチャートから、特定のアプリもしくはインスタンスタイプを選択します。そしてパフォーマンス内での予期せぬスパイクの応答時間もしくは分ごとのリクエスト(スループット)を確認します。(これにより、リソースもしくは他のサービスとのスループット時間に影響を与えている外れ値または「うるさい隣人」をより簡単に特定できます。)
  • データストアノードを選択し、個別のインスタンスを有効化もしくは無効化することでチャートをフィルターできます(手動で100インスタンスまでフィルターすることが可能です)。選択はマップを保存した際に保存されます。
  • パフォーマンスに予期せぬ影響を与えている可能性のある外れ値を特定します。
New Relicのサービスマップで問題のあるデータベースもしくはインスタンスが特定できたら、New Relicのトランザクショントレースおよび遅いクエリトレース、またデータベース ベンダー ツールを使い、さらに問題を調べることが可能です。

https://rpm.newrelic.com/apm > サービスマップ > (選択したマップ) > (選択したデータストアノード):インスタンスノードを選択することで、パフォーマンス問題をさらにドリルダウンできます。選択したノードで、個別のインスタンスを有効化もしくは無効化することも可能です。また、選択はマップ保存時に保存されます。
Insightsダッシュボードとウィジェット例
データベースインスタンス詳細をサポートするNew Relic APM agentを使っている場合、New Relic Insightsを使い、応答時間やスループットといった時間区切りメトリクスでレポートすることが可能です。また、パフォーマンス問題や傾向を可視化するカスタムダッシュボードメトリックウィジェットの作成および共有もできます。
インスタンスパフォーマンスのカスタムメトリクスにおけるアラート例

お客様の体験にネガティブな影響を与える前にアプリとデータベースインスタンス間のパフォーマンス問題を通知するには、New Relic Alertsを使用します。問題が重大なしきい値と定義した値に到達した際、自動的にPagerDutyやwebhooks等経由で担当者に通知するアラートポリシーを作成可能です。
アラートポリシー設定の一環として、下記のフォーマットを使用しカスタムメトリクスで特定のインスタンスに関する状態を作成します:

例えば:

 

 

関連情報

追加のドキュメンテーションリソースは次のとおりです。
New Relic APM概要ページ(New Relic APMのホストパフォーマンスの概要を表示し、さらに詳細な情報を調べるためNew Relic Infrastructureへリンクします)
New Relic Infrastructureコンピュートページ(組織のリソースコンテキストから、ホストまたはインスタンスに関連するパフォーマンス問題を表示します)

New Relic オンラインテクニカルコミュニティー での New Relic APMに関するディスカッションにぜひご参加ください ! テクニカルコミュニティーはNew Relicツールセットについて議論し、トラブルシューティングを行うための公開プラットフォームです。

 

PROプランのすべての機能を
14日間無料でお試し

新規無料登録いただくとPROプランのすべての機能を
14日間無料でお試しいただけます。
クレジットカードなど決済情報の登録は不要です。

各プランの詳細はこちらからご確認ください。