ホームページ >バックエンド開発 >PHPチュートリアル >PHP APM比較評価:OneAPM、New Relic、Tingyun
@penguinz さんの勧めで、アプリケーション パフォーマンス管理サービスを提供する別の国内メーカーを見つけました。Wu Shuai 氏の試用ノートを読んだ後、外資系アプリケーション パフォーマンス管理メーカーである New Relic を知りました。本物の APM エキスパートです。製品ラインは非常に包括的で、機能は非常に強力です。しかし、Si の人々が言ったように、アクセスが遅すぎます。一見すると、これら 3 社の製品は製品設計からインターフェースまで非常に似ていることがわかります。国内 2 社の製品が New Relic の製品から「学んでいる」ことは明らかです。海外製品の単なるコピーではなく、国内ユーザーのニーズに合わせた製品づくりが可能です。
前回 OneAPM のレビューを書きましたので、Tingyun の製品テストについては詳しく書きません。Siren のブログに非常に詳細な試用レポートが記載されています。 http://www.imsiren.com/archives/1192。春節が終わって少し時間があったので、3つの製品をインストールし、一定期間じっくり使ってみたので、これらの製品との比較体験を共有したいと思います。
Siren の試用レポートを読んだ後、Tingyun の製品が NoSQL アクセスのパフォーマンスを監視できることがわかりました。そのため、このテストはオリジナルの WordPress アプリケーションに基づいて、いくつかの PHP スクリプトを追加しました。このアプリケーションでは、MySQL データベースに加えて、MongoDB、Redis、および Memcached へのアクセスも導入されました。応答時間の比較から、Tingyun は最も多くのパフォーマンス指標をサポートしています。詳細については、以下の表を参照してください。
| OneAPM | ティンユン | New Relic | ||||||||||||||||||||||||||||||||
PHP コード | サポート | サポート | サポート | ||||||||||||||||||||||||||||||||
RDMS データベース | サポート | サポート | サポート | ||||||||||||||||||||||||||||||||
サポートされていません | td>サポート | サポート td> td> | |||||||||||||||||||||||||||||||||
外部サービス | サポートされていません | サポートされています | サポート | ||||||||||||||||||||||||||||||||
Redis | サポートされていません | サポートされています | サポートされていません | ||||||||||||||||||||||||||||||||
MongoDB td> | サポートされていません | サポートされています /td> | サポートされていません | ||||||||||||||||||||||||||||||||
ブロック時間 | サポートされていません | をサポートします | サポートしません |
さらに、Tingyun はこれらの一般的に使用される NoSQL データベースの詳細な分析を提供しますが、他の 2 つの製品は RDMS リレーショナル データベースの詳細な分析のみを提供することについても後述します。
Web トランザクションとデータベースのパフォーマンスの内訳のみを示す OneAPM の応答時間グラフ
Tingyun の応答時間グラフは、アプリケーション、データベース、非リレーショナル データベースなどを含む複数のコンポーネントのパフォーマンスの内訳を示します。
PHP、データベース、Memcache、Web 外部の 4 つのパフォーマンスの内訳を示す New Relic の応答時間グラフ
トポロジからロジック図を見ると、さまざまなアプリケーション バックエンド サービスのサポートの違いもわかります。Tingyun と New Relic は両方とも NoSQL データベースの表示をサポートしていますが、OneAPM はデータベース サービスの表示のみをサポートしています。 OneAPM のトポロジ マップを使用すると、マップ上で Web トランザクションとデータベースの分解レポートに直接ドリルダウンできます。ただし、Tingyun と New Relic はドリルダウン機能を提供せず、対応するサービスの応答曲線グラフのみを提供します。
OneAPM トポロジ図 (ドラッグしてドリルできます)
Tingyun トポロジ ロジック図 (ほとんどのサービスを識別しますが、ドラッグしてドリルすることはできません)
New Relic Map、一部の NoSQL を特定、ドラッグしてドリルすることはできません
OneAPM トランザクションリスト
New Relic の取引リスト
Tingyun の取引リスト
トランザクション リストから、New Relic は他の 2 つよりも WordPress をサポートしていることがわかります。他の 2 つの Home は、要約統計のために WordPress が受け取るさまざまなパラメーターに基づいてさまざまなトランザクション名を識別できます。 URIの形式。
3 つの製品間のトランザクション パフォーマンスの概要分析には大きな違いはありません。主な違いは、トレースに反映されています。取引が遅い。トレース機能は、コード セグメントの消費時間、コード セグメント実行の詳細な手順とコール スタック、関連する SQL ステートメント、その他の情報を含む、非常に遅いトランザクション アクセスに関する詳細な診断データを保持します。追跡レコードリストのデフォルトのソートでは、Tingyun は応答時間の逆ソートを使用しますが、New Relic と OneAPM はどちらもコレクションのタイムスタンプを逆ソートに使用します。比較すると、Tingyun のソート方法が最も合理的であると確信しています。最も遅いリクエストが優先されます。
OneAPM トレースの概要
リスニング クラウド アプリケーション プロセス トレースの概要
New Relic トランザクション トレースの概要
トレースの概要情報表示では、New Relic の表示パフォーマンス コンポーネントが比較的簡潔で明確です。つまり、非常に読みやすく、問題を大まかに特定することができます。 Tingyun の成分表示が最も詳細ですが、分解が詳細すぎるため、読みにくく、簡潔ではありません。 OneAPM では比較的少数のコンポーネントが表示されますが、分解は煩雑でまったく理解できません。
トランザクション トレースの 2 番目の部分であるトレースの詳細には、コードのネストされた呼び出し、コード スタックなどを含む、記録された低速トランザクション処理におけるコードの完全な実行プロセスが表示されます。 Tingyun と New Relic はどちらも、比較的正確で読みやすいコード呼び出しの詳細とコード スタックを提供します。OneAPM の詳細のコード セグメントが正しく表示されない場合があり、コード スタックの表示が提供されません。
Tingyun の追跡詳細
New Relic の追跡詳細
OneAPM のトレース情報
OneAPM のトレース情報には、他の 2 つよりも多くのユーザー定義パラメーターがあり、リクエストで送信されたフォーム パラメーターを参照する必要があります。他の 2 つは、HTTP ヘッダーに部分的なパラメーター情報のみを持ちます。
スロー SQL ログの分析は、MySQL のスロー クエリ ログと似ています (MySQL スロー クエリ) log) 。クエリ時間が比較的遅い SQL ステートメントを記録できます。機能比較の観点から見ると、OneAPM は詳細な SQL ステートメントとクエリ時間のみを記録しますが、New Relic と Tingyun はクエリ時間と SQL ステートメントだけでなく、SQL ステートメントの実行計画と SQL ステートメントを呼び出すアプリケーションも記録します。 . コード呼び出しスタック。さらに、Tingyun は、SQL ステートメントのクエリ時間分布に対応する散布図も表示します。これは、遅い SQL レコードを表示するために、より直感的で使いやすいものです。
Tingyun のスロー クエリ トレースは、散布図、SQL ステートメント、クエリ時間、実行プラン、コード コール スタックを含む、最も詳細な情報です。
New Relic のスロー クエリ トレースには、クエリ時間、SQL ステートメント、コード呼び出しスタック。
OneAPM の遅い SQL レコード、クエリ時間と SQL ステートメントのみ。
現時点では、Tingyun のみが NoSQL サービスのパフォーマンス分析を提供しています。分析を通じて、MongoDB、Redis、Memcached を含む 3 つの NoSQL サービスの分析を提供しています。 MongoDB では、さまざまな操作の応答時間とスループット レートをコレクションごとに表示することもできます。 New Relic には以前の応答時間の Memcached パフォーマンス データがありますが、この NoSQL サービスのより詳細な分析データは個別に提供されていません。 OneAPM は現在、いかなる種類の NoSQL データベース パフォーマンス分析もサポートしていません。
TingyunのNoSQL性能解析機能モジュール
TingyunのMongoDB解析
TingyunのRedis解析
TingyunのMemcached分析
3 社の製品はいずれも外部サービス (Web サービスを通じてアプリケーションから呼び出される外部 API) のパフォーマンス分析をサポートしています。 New RelicとOneAPMの製品は各ホストの平均的なレスポンス性能を表示しますが、OneAPMにはバグがあるようで同じホストがリストに繰り返し表示され性能値がばらつきます。 Tingyun の外部サービスのパフォーマンス分析では、ホスト レベルのデータに加えて、ホスト下の各異なる URI を押してパフォーマンス データを集計することもでき、さまざまな API インターフェイスのパフォーマンスの違いを理解することができ、より実用的な価値があります。
OneAPM の外部サービスはホスト レベルで表示され、同じホストが繰り返し表示されるバグがあります
New Relic の外部サービスは次の場所で表示されますホストレベル
Tingyun の外部サービスはホストおよび特定の URI レベルに表示されます
Web 経由でアクセスされない PHP スクリプト、つまりコマンド ライン モード (CLI) で実行される PHP プログラムの場合、製品はバックグラウンド タスクを通じて表示されます。現在、OneAPM の製品は CLI モードでの PHP アプリケーション監視を提供できず、データのこの部分は空です。 New Relic と Tingyun はどちらも CLI で実行されている PHP を監視でき、コード セグメントの消費量に応じてバックグラウンド タスクのパフォーマンスを表示できるパフォーマンス分解機能を提供します。ただし、New Relic のパフォーマンス分解にはバグがあります。私が実行したスクリプトは明らかに Redis データベースにアクセスしていましたが、Memcache アクセスに分解されていました。これが当てはまる場合、前のグラフの Memcache パフォーマンス データはおそらく間違っています。
OneAPM のバックグラウンド タスク データが空であり、CLI モードでの PHP アプリケーションのパフォーマンスを監視できません
バックグラウンド タスクNew Relic のデータ。「非 Web」タイプを使用して、CLI モードで実行されている PHP アプリケーションのパフォーマンスを示します。
New Relic のバックグラウンド タスクのパフォーマンス内訳では、コード時間と NoSQL サービスの操作時間がわかりますが、Redis は Memcached として認識されます
Tingyun のバックグラウンド タスク分析
Tingyun のバックグラウンド タスクのパフォーマンスの内訳。コードの実行時間とさまざまな Redis 操作のパフォーマンスを正確に識別します。
エラー分析は、アプリケーションでスローされた例外情報と PHP エラー コードを記録し、計算します全体のアプリケーションエラー率。このテストの結果から判断すると、Tingyun と他の 2 社の間には大きな違いがあり、New Relic と OneAPM はどちらもエラー率が約 10% で大量のエラー メッセージを記録しましたが、Tingyun にはエラーがありませんでした。メッセージを記録します。
データを注意深く調べた結果、New Relic と OneAPM によって記録されたエラーは、実際には警告レベル (E_USER_WARNING) の重大ではないエラーであることがわかりました。実際、私のテスト アプリケーションはエラーなく正常にアクセスされました。 。 Tingyun は基本的なエラーのみを記録するため、警告レベルのエラー メッセージは記録されません。実際的な観点から見ると、Tingyun の方が合理的です。なぜなら、これらの警告レベルのエラーを気にする必要がないからです。そうでなければ、アプリケーションのエラー率が非常に高かった場合、ユーザーはずっと前に苦情を言っていたでしょう。
ただし、可能であれば、必要に応じてどのレベルのエラー ログを収集するかを選択できるように、エラー レベル設定オプションを提供したいと考えています。
OneAPM エラー分析
New Relic エラー分析
New Relic と OneAPM は両方ともレポート機能を提供します。この機能は、サマリー テーブルを使用して、一定期間にわたる Web トランザクションと SQL パフォーマンスの比較レポートを表示します。テスト結果から判断すると、New Relic は正常にレポート データを提供できるようですが、前回のテストではテーブル データは常に空でした。 Tingyun にはこの機能モジュールがありません。
最近 OneAPM レポートが適切に動作していないようで、テーブルは常に空です。
過去の期間のパフォーマンス データの比較を示す New Relic のレポート
3 つの製品はすべて、監視対象の PHP アプリケーションに対してパフォーマンスとエラー率のアラームを設定でき、アプリケーションにパフォーマンスの問題があり、エラー率が高すぎる場合にアラームを送信してユーザーに通知します。 。
比較テスト中に、OneAPM と New Relic の両方が、アラームのしきい値やトリガー時間などの異なるアラーム ポリシーを事前に設定し、アラームが必要なアプリケーションにポリシーを割り当てることができることがわかりました。アラーム ルールがより柔軟になり、複数のアプリケーションに簡単にコピーできるため、より使いやすくなります。
ただし、Tingyun のアラーム設定は、アプリケーションごとに個別にアラームしきい値を設定することしかできず、トリガー時間などのパラメーターを設定することはできません。また、ポリシーの割り当てがないため、同じアラーム設定を複数にコピーすることはできません。使いやすさが悪い。
OneAPM のアラームポリシー設定で閾値やトリガー時間などを設定可能
New Relic のアラームポリシー設定も設定可能 閾値およびトリガー時間の設定
Tingyun のアラーム設定はしきい値のみを設定でき、アラーム戦略の概念はありません
Trace しきい値や ApdexT 値の設定など、監視結果データに大きな影響を与えるアプリケーション設定は数多くあるため、ユーザーにカスタマイズした設定機能を提供することが最善です。特に、ApdexT 値は、Apdex スコアの評価とアラートの結果に直接影響します。いつでも動的に設定できることが非常に必要です。テスト結果から判断すると、Tingyun のアプリケーション設定は最も包括的で便利で、オンラインで変更でき、アプリケーション サーバーを再起動せずにリアルタイムで有効になります。 OneAPM と New Relic は、アプリケーションの設定に関してはそれほど完全ではありません。
OneAPM アプリケーション設定ページには、実際には設定できる項目はありません。構成ファイルで設定できるオプションがいくつかリストされているだけですが、対応する説明や説明はありません。構成ファイルの設定を変更するには、アプリケーション サーバーを再起動する必要がありますが、これはあまり現実的ではありません。
New Relic のアプリケーション設定では、アプリケーション名と ApdexT 値を変更できます。その他のオプションは構成ファイルでのみ変更できます。 , しかし、同じ問題は、変更後にサービスを再起動する必要があるということであり、これは少し実用的ではありません。
Tingyun のアプリケーション設定には、変更可能な最も包括的なパラメーターとしきい値があり、設定ファイルとオンライン設定についても詳細な説明が含まれています。サービスを再起動しなくても有効になり、いつでも調整できるため、非常に使いやすくなっています。
元記事、転載の際は出典を明記してください!