Swoole の非同期デバッグのヒント: Tideways を使用したパフォーマンス監視

王林
リリース: 2023-06-13 18:27:14
オリジナル
1121 人が閲覧しました

PHP コミュニティで Swoole の人気が高まるにつれ、Swoole がもたらす優れたパフォーマンス、高いスケーラビリティ、豊富な非同期プログラミング機能を享受する開発者が増えています。ただし、Swoole を開発に使用すると、必然的にさまざまな問題に遭遇します。最も一般的な問題の 1 つはパフォーマンスのボトルネックです。この問題を解決するには、コードのパフォーマンスの分析と最適化に役立つ効果的なパフォーマンス監視ツールが必要です。この記事では、Tideways を使用して Swoole アプリケーションのパフォーマンス監視を実行する方法を紹介し、開発者が Tideways をより効果的に使用してコードを分析および最適化できるようにするための実践的なデバッグ スキルをいくつか紹介します。

1. タイドウェイとは何ですか?

Tideways は、ドイツの Tideways GmbH が開発したパフォーマンス監視ツールで、PHP アプリケーションに効率的なパフォーマンス監視と問題診断機能を提供することを目的としています。 Tideways は、分析と最適化のために PHP アプリケーションでアプリケーション パフォーマンス データをリアルタイムかつシームレスにキャプチャできる低侵入エージェント メカニズムを使用しています。

Tideways は、Tideways CLI と呼ばれるコマンド ライン インターフェイス ツールを提供しており、これを使用して Tideways エージェントを実行および管理できます。 Tideways CLI をインストールした後、次のコマンドを実行して Tideways エージェントを起動できます:

$ tideways daemon start
ログイン後にコピー
ログイン後にコピー

Tideways エージェントを起動した後、パフォーマンスの監視と問題の診断に Tideways を使用できます。

2. Swoole アプリケーションで Tideways を使用するにはどうすればよいですか?

Swoole アプリケーションで Tideways を使用するには、Composer を通じて Tideways PHP 拡張機能と Tideways Swoole 拡張機能をインストールする必要があります。インストールが完了したら、次のコードを使用して Tideways を起動できます:

<?php
// 加载Tideways扩展
if (extension_loaded('tideways')) {
    // 根据需要设置Tideways的配置
    $config = [
        'api_key' => 'YOUR_API_KEY',
        'sample_rate' => 100,
        'transaction_name' => 'default'
    ];
    tideways_enable($config);
}

// 加载Tideways Swoole扩展
if (extension_loaded('tideways_swoole')) {
    tideways_swoole_enable();
}

// 在Swoole的回调函数中使用Tideways
$http = new SwooleHttpServer("0.0.0.0", 9501);
$http->on('request', function ($request, $response) {
    // 使用Tideways开启一个事务
    tideways_transaction_start();

    // 处理业务逻辑
    handle_request($request, $response);

    // 使用Tideways结束当前事务
    tideways_transaction_end();
});

$http->start();
ログイン後にコピー

この例では、最初に Tideways 拡張機能と Tideways Swoole 拡張機能をロードする必要があります。次に、tideways_enable() 関数を使用して Tideways を有効にし、必要に応じて構成を設定します。 Swoole コールバック関数では、tideways_transaction_start() 関数を呼び出して新しいトランザクションを開始し、tideways_transaction_end() 関数を呼び出して現在のトランザクションを終了できます。このようにして、Tideways を使用して Swoole アプリケーションのパフォーマンス データを監視できます。

3. Tideways を使用してパフォーマンスの監視と分析を行うためのヒント

Tideways を有効にした後、Tideways が提供するさまざまな機能を使用して、Swoole アプリケーションのパフォーマンスを監視および分析できます。実践的なヒント。

1. トランザクション名とサンプリング レートを設定する

Swoole アプリケーションを開発する場合、パフォーマンス データをより適切に分析するために、各トランザクションに意味のある名前を指定し、適切なサンプリングを設定する必要があります。レート。トランザクション名は、後のデータ分析で各トランザクションをより適切に識別および区別できるように、現在のトランザクション処理のロジックをできるだけ正確に記述する必要があります。サンプリングレートは、データ収集量とサンプリング精度を制御するパラメータであり、実際の状況に応じて調整できます。

<?php
// 根据实际情况设定事务名称和采样率,并传入$config数组中
$config = [
    'transaction_name' => 'my_transaction_name',
    'sample_rate' => 50
];
tideways_enable($config);
ログイン後にコピー

2. コード分析に XHProf Profiler を使用する

Tideways は、コード分析に XHProf Profiler を使用することをサポートしています。 XHProf Profiler を有効にすることで、各トランザクションのどの関数とメソッドの実行に最も時間がかかるのか、パフォーマンスのどの部分をさらに最適化する必要があるのか​​を理解できます。

XHProf Profiler を使用する場合は、次のことを行う必要があります:

  1. XHProf を有効にする:
tideways_xhprof_enable(TIDEWAYS_XHPROF_FLAGS_CPU | TIDEWAYS_XHPROF_FLAGS_MEMORY);
ログイン後にコピー
  1. パフォーマンス分析を実行し、XHProf を停止します:
$result = tideways_xhprof_disable();
ログイン後にコピー
  1. パフォーマンス データの印刷:
print_r($result);
ログイン後にコピー

具体的な実装については、次のコードを参照してください:

<?php
// 启用XHProf Profiler
tideways_xhprof_enable(TIDEWAYS_XHPROF_FLAGS_CPU | TIDEWAYS_XHPROF_FLAGS_MEMORY);

// 执行一些业务逻辑
do_some_stuff();

// 停止XHProf Profiler并获取性能数据
$xhprof_data = tideways_xhprof_disable();

// 打印性能数据
print_r($xhprof_data);
ログイン後にコピー

プログラムの完了後ターミナルで次のコマンドを実行してパフォーマンス データを表示できます:

$ php -r "print_r(unserialize(file_get_contents('xhprof-data.xhprof')))"

Array
(
    [data] => Array
        (
            [my_program/1604976975.944807] => Array
                (
                    [wt] => 1604976962
                    [cpu] => 1215860
                    [mu] => 11700
                    [pmu] => 1604568
                    [samples] => Array
                        (
                            [main()] => Array
                                (
                                    [wt] => 1604976962
                                    [cpu] => 1215860
                                    [mu] => 11700
                                    [pmu] => 1604568
                                    [n] => 1
                                    [wt.1] => 1604976962
                                    [cpu.1] => 1215860
                                    [mu.1] => 11700
                                    [pmu.1] => 1604568
                                    [is_main] => 1
                                )
                            [my_function()] => Array
                                (
                                    [wt] => 10
                                    [cpu] => 10
                                    [mu] => 0
                                    [pmu] => 0
                                    [n] => 1
                                    [wt.1] => 10
                                    [cpu.1] => 10
                                    [mu.1] => 0
                                    [pmu.1] => 0
                                )
                        )
                )
        )
)
ログイン後にコピー

3. リアルタイム分析には Tideways Traces を使用します

Tideways Traces は、リアルタイムのパフォーマンス監視および分析ツールです。 Swooleアプリケーションでの使用は非常に簡単です。 Tideways Traces を通じて、各トランザクションの処理時間、リソース消費、その他の情報をリアルタイムで表示できるため、パフォーマンスのボトルネックや問題を迅速に特定できます。

Tideways Traces をリアルタイム分析に使用するための具体的な手順は次のとおりです。

  1. Tideways エージェントの開始:
$ tideways daemon start
ログイン後にコピー
ログイン後にコピー
  1. Tideways を有効にする:
$config = [
    'api_key' => 'YOUR_API_KEY'
];
tideways_enable($config);
ログイン後にコピー
  1. Tideways Traces を有効にする:
tideways_enable_tracing();
ログイン後にコピー

Tideways Traces を有効にすると、Tideways ダッシュボードで各トランザクションの処理ステータスをリアルタイムで表示できるようになります。具体的な使用方法については、Tidewaysの公式ドキュメントを参照してください。

4. 概要

Tideways を使用してパフォーマンスの監視と分析を行うことは非常に実践的なスキルであり、Swoole アプリケーション開発では特に重要です。この記事で紹介した方法を使用すると、Tideways を簡単に有効にし、Tideways が提供するさまざまな機能を使用して Swoole アプリケーションのパフォーマンス分析を実行し、アプリケーションの最適化と改善を図ることができます。もちろん、Tideways は数あるパフォーマンス監視ツールの 1 つにすぎず、実際の状況に基づいて他の適切なパフォーマンス監視および分析ツールを選択することもできます。

以上がSwoole の非同期デバッグのヒント: Tideways を使用したパフォーマンス監視の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート