Maison  >  Article  >  cadre php  >  Conseils de débogage asynchrone Swoole : surveillance des performances à l'aide de Tideways

Conseils de débogage asynchrone Swoole : surveillance des performances à l'aide de Tideways

王林
王林original
2023-06-13 18:27:141113parcourir

Alors que Swoole devient de plus en plus populaire dans la communauté PHP, de plus en plus de développeurs commencent à profiter des excellentes performances, de la haute évolutivité et des riches capacités de programmation asynchrone apportées par Swoole. Cependant, lorsque nous utilisons Swoole pour le développement, nous rencontrerons inévitablement divers problèmes, l'un des problèmes les plus courants étant les goulots d'étranglement des performances. Afin de résoudre ce problème, nous avons besoin d'un outil de surveillance des performances efficace pour nous aider à analyser et à optimiser les performances du code. Dans cet article, nous présenterons comment utiliser Tideways pour effectuer la surveillance des performances des applications Swoole et fournirons des compétences pratiques de débogage pour aider les développeurs à mieux utiliser Tideways pour analyser et optimiser leur code.

1. Que sont les Tideways ?

Tideways est un outil de surveillance des performances développé par une société allemande appelée Tideways GmbH. Son objectif est de fournir des fonctions efficaces de surveillance des performances et de diagnostic des problèmes pour les applications PHP. Tideways utilise un mécanisme d'agent à faible intrusion qui peut capturer les données de performances des applications en temps réel et de manière transparente dans les applications PHP à des fins d'analyse et d'optimisation.

Tideways fournit un outil d'interface de ligne de commande appelé Tideways CLI, qui peut être utilisé pour exécuter et gérer l'agent Tideways. Après avoir installé Tideways CLI, nous pouvons démarrer Tideways Agent en exécutant la commande suivante :

$ tideways daemon start

Après avoir démarré Tideways Agent, nous pouvons utiliser Tideways pour la surveillance des performances et le diagnostic des problèmes.

2. Comment utiliser Tideways dans l'application Swoole ?

Pour utiliser Tideways dans l'application Swoole, nous devons installer l'extension PHP Tideways et l'extension Tideways Swoole via Composer. Une fois l'installation terminée, nous pouvons démarrer Tideways avec le code suivant :

<?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();

Dans cet exemple, nous devons d'abord charger Tideways et l'extension Tideways Swoole. On peut alors utiliser la fonction tideways_enable()函数来启用Tideways,并根据需要设置一些配置。在Swoole的回调函数中,我们可以通过调用tideways_transaction_start()函数来开启一个新事务,再通过调用tideways_transaction_end() pour mettre fin à la transaction en cours. De cette façon, nous pouvons utiliser Tideways pour surveiller les données de performances dans les applications Swoole.

3. Conseils pour utiliser Tideways pour le suivi et l'analyse des performances

Après avoir activé Tideways, nous pouvons utiliser les différentes fonctions fournies par Tideways pour surveiller et analyser les performances des applications Swoole.

1. Définir le nom de la transaction et le taux d'échantillonnage

Lors du développement d'une application Swoole, afin de mieux analyser les données de performances, nous devons spécifier un nom significatif pour chaque transaction et définir un taux d'échantillonnage approprié. Le nom de la transaction doit décrire la logique du traitement actuel de la transaction aussi précisément que possible afin que chaque transaction puisse être mieux identifiée et distinguée lors de l'analyse ultérieure des données. Le taux d'échantillonnage est un paramètre qui contrôle la quantité de données collectées et la précision de l'échantillonnage. Il peut être ajusté en fonction de la situation réelle.

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

2. Utilisez XHProf Profiler pour l'analyse du code

Tideways prend en charge l'utilisation de XHProf Profiler pour l'analyse du code. En activant XHProf Profiler, nous pouvons comprendre quelles fonctions et méthodes de chaque transaction prennent le plus de temps à s'exécuter et quelles parties des performances nécessitent une optimisation supplémentaire.

Lors de l'utilisation de XHProf Profiler, nous devons effectuer les opérations suivantes :

  1. Activer XHProf :
tideways_xhprof_enable(TIDEWAYS_XHPROF_FLAGS_CPU | TIDEWAYS_XHPROF_FLAGS_MEMORY);
  1. Effectuer une analyse des performances et arrêter XHProf :
$result = tideways_xhprof_disable();
  1. Imprimer les données de performances :
print_r($result);

Pour une implémentation spécifique , veuillez vous référer au code suivant :

<?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);

Une fois le programme exécuté, nous pouvons exécuter la commande suivante dans le terminal pour afficher les données de performance :

$ 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 Utilisez Tideways Traces pour une analyse en temps réel

Tideways Traces est un. Outil de surveillance et d'analyse des performances en temps réel, il est très pratique à utiliser dans l'application Swoole. Grâce à Tideways Traces, nous pouvons visualiser le temps de traitement, la consommation de ressources et d'autres informations de chaque transaction en temps réel pour nous aider à identifier rapidement les goulots d'étranglement et les problèmes de performances.

Les étapes spécifiques pour utiliser Tideways Traces pour l'analyse en temps réel sont les suivantes :

  1. Démarrer l'agent Tideways :
$ tideways daemon start
  1. Activer Tideways :
$config = [
    'api_key' => 'YOUR_API_KEY'
];
tideways_enable($config);
  1. Activer Tideways Traces :
tideways_enable_tracing();

Après l'activation Traces des marées , nous pouvons Vous pouvez vérifier l'état de traitement de chaque transaction en temps réel dans le tableau de bord Tideways. Pour les méthodes d'utilisation spécifiques, veuillez vous référer à la documentation officielle de Tideways.

4. Résumé

Utiliser Tideways pour le suivi et l'analyse des performances est une compétence très pratique, particulièrement importante dans le développement d'applications Swoole. Grâce à la méthode présentée dans cet article, nous pouvons facilement activer Tideways et utiliser les différentes fonctions qu'il fournit pour effectuer une analyse des performances de l'application Swoole afin de mieux optimiser et améliorer l'application. Bien entendu, Tideways n'est qu'un parmi de nombreux outils de suivi des performances. Nous pouvons également choisir d'autres outils appropriés pour le suivi et l'analyse des performances en fonction de la situation réelle.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn