PHP アプリケーションのパフォーマンス監視と分析の非侵入型監視
はじめに
PHP アプリケーションのパフォーマンスのいわゆる非侵入型監視とは、既存のシステム コードを変更せずにシステムを監視することを意味します。このようなシステムは、PHP アプリケーションにより簡単に適用できます。これは他の人にインスピレーションを与える方法であり、誰でもコミュニケーションをとることができます。
オプション 1
各リクエストのアクセス時間のみを監視する場合。 nginx ログを直接確認してください。 nginx ログには 2 つのオプションがあります。 $request_time と $upstream_response_time 。 どちらのオプションでも応答時間を記録します。
1. $request_time は、ユーザーリクエストの最初のバイトを受け入れてから応答データを送信するまでの時間を指します。これには、リクエストデータを受信する時間、プログラムの応答時間、およびデータを出力する時間が含まれます。応答データ。
2. $upstream_response_time は、Nginx がバックエンド (php-cgi) への接続を確立してから、データを受け入れて接続を閉じるまでの時間を指します。
バックエンド PHP サービスのパフォーマンスのみを監視する場合は、$upstream_response_time オプションに注意してください。
オプション 2
PHP リクエストをさらに処理する必要があり、その特定の部分により多くの時間がかかる場合は、xhprof を使用する必要があります。 xhprof はコール グラフを生成でき、どの部分がより多くの時間を費やしているかを明確に確認できます。以下に示すように (インターネットから):
完全な構築手順は次のとおりです:
xhprof をダウンロードしてインストールします
1. ダウンロードしてコンパイルするコマンド。
$wget https://github.com/phacility/xhprof/archive/master.zip$unzip ./xhprof_master.zip$cd ./xhprof_master/extension$/usr/local/php/bin/phpize$./configure --with-php-config=/usr/local/php/bin/php-config$make$make install
私の php は /usr/local/php ディレクトリにインストールされていることに注意してください。状況に応じて上記のパスを適切に変更してください。
2. 設定ファイル php.ini を変更します
$vim /etc/php.ini
以下の内容を下部に追加します:
[xhprof]
extension=xhprof.so
xhprof.output_dir=/tmp/xhprof
3. 次のコマンドを使用して、xhprof が正常にインストールされているかどうかを確認します。上記のコマンド出力が xhprof という単語がある場合は、xhprof 拡張機能が正常にインストールされていることを意味します。
$/usr/local/php/bin/php -m
5. URL を通じてパフォーマンス データにアクセスするように nginx 構成を変更します。次のコードを nginx に追加します。 >
6. パフォーマンス データ収集プログラムを展開し、xhprof.php ファイルを /www/sites/xhprof.php に展開します。 xhprof.php ファイルの内容は次のとおりです。$mkdir -p /www/sites/xhprof$cp -r ./xhprof_master/xhprof_html /www/sites/xhprof$cp -r ./xhprof_master/xhprof_lib /www/sites/xhprof
server { listen 8999; root /opt/sites/xhprof/; index index.php index.html; location ~ .*\.php$ { add_header Cache-Control "no-cache, no-store, max-age=0, must-revalidate"; add_header Pragma no-cache; add_header Access-Control-Allow-Origin *; add_header Via "1.0 xgs-150"; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; include fastcgi.conf; fastcgi_connect_timeout 300; fastcgi_send_timeout 300; fastcgi_read_timeout 300; } }
* Nginx/PHP-FPM メソッド:
<?phpdefine("XH_LOG_PATH", "/tmp/xhprof.log");$xh_force_disable = false; //设置性能分析是否启用,设置为true表示关闭。$max_time = 100; //millisecond$xh_enable = false;$start_time = microtime(true);//这里可以设置需要进行性能分析的url和设置的超时时间。如果指定的url,响应时间超过了设置的超时时间,性能分析数据就会被记录下来。超时时间的单位为毫秒。$xh_conf["urls"] = array( //url => max_time "/i/content/getdetail.json" => 100,);function xh_save_data(){ global $start_time, $xh_force_disable, $xh_enable, $max_time; $end_time = microtime(true); $cost_time = $end_time - $start_time; $cost_time *= 1000; if( $cost_time > $max_time && !$xh_force_disable && $xh_enable ){ include_once "/www/sites/xhprof/xhprof_lib/utils/xhprof_lib.php"; include_once "/www/sites/xhprof/xhprof_lib/utils/xhprof_runs.php"; $xhprof_data = xhprof_disable(); $objXhprofRun = new XHProfRuns_Default(); $run_id = $objXhprofRun->save_run($xhprof_data, "xhprof"); $log_data = "cost_time||$cost_time||run_id||$run_id||request_uri||".$_SERVER["REQUEST_URI"]."\n"; //高并发下 可能会出现错乱情况。建议把 const_time run_id request_uri 写入到数据库 file_put_contents(XH_LOG_PATH, $log_data, FILE_APPEND); }}$xh_request_uri = isset($_SERVER["REQUEST_URI"]) ? $_SERVER["REQUEST_URI"] : "";$arr_xh_cur_url = explode("?", $xh_request_uri);$xh_cur_url = $arr_xh_cur_url[0];if( !$xh_force_disable && isset($xh_conf["urls"][$xh_cur_url]) ){ $xh_enable = true; $max_time = $xh_conf["urls"][$xh_cur_url]; xhprof_enable(XHPROF_FLAGS_CPU + XHPROF_FLAGS_MEMORY); register_shutdown_function("xh_save_data"); }else{ $xh_enable = false;}?>
fastcgi_param PHP_VALUE "auto_prepend_file=/ www /sites/xhprof.php";
* Apache モード:
php_value auto_prepend_file "/www/sites/xhprof.php"
* php.ini モード:
auto_prepend_file="/www/sites/xhprof.php"
注: オペコード キャッシュを使用する場合は、必ず PHP プロセスを再起動してください。
7. パフォーマンス分析ログを表示します
$tail /tmp/xhprof.log
$cost_time||200||run_id||adadfdsadad | |request_uri||/i/content/getcontent.json
上記の出力:
cost_time は 200 ミリ秒かかります
run_id は adadfdsadad
request_uri /i/content/getcontent.json
8. run_id
http://127.0.0.1:8999/xhprof_html/index.php?run に基づいてパフォーマンス分析データを表示します。 = adadfdsadad
閲覧方法は http://www.cnblogs.com/siqi/p/3790186.html
注:
1正式サービス開始後 この作業を行う前に、通常のデータ出力に影響がないことを必ず確認してください。出力内容が同じであることを確認後、再度オンラインに接続してください。
2. 各 URL の max_time を小さくしすぎないでください。
3. xhprof はオンライン サービスのパフォーマンスに影響を与えるため、1 つのマシン上でのみ監視するか、リクエストをランダムに監視するように xhprof.php コードを変更することをお勧めします。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









PHPクライアントURL(CURL)拡張機能は、開発者にとって強力なツールであり、リモートサーバーやREST APIとのシームレスな対話を可能にします。尊敬されるマルチプロトコルファイル転送ライブラリであるLibcurlを活用することにより、PHP Curlは効率的なexecuを促進します

顧客の最も差し迫った問題にリアルタイムでインスタントソリューションを提供したいですか? ライブチャットを使用すると、顧客とのリアルタイムな会話を行い、すぐに問題を解決できます。それはあなたがあなたのカスタムにより速いサービスを提供することを可能にします

記事では、PHP 5.3で導入されたPHPの後期静的結合(LSB)について説明し、より柔軟な継承を求める静的メソッドコールのランタイム解像度を可能にします。 LSBの実用的なアプリケーションと潜在的なパフォーマ

JWTは、JSONに基づくオープン標準であり、主にアイデンティティ認証と情報交換のために、当事者間で情報を安全に送信するために使用されます。 1。JWTは、ヘッダー、ペイロード、署名の3つの部分で構成されています。 2。JWTの実用的な原則には、JWTの生成、JWTの検証、ペイロードの解析という3つのステップが含まれます。 3. PHPでの認証にJWTを使用する場合、JWTを生成および検証でき、ユーザーの役割と許可情報を高度な使用に含めることができます。 4.一般的なエラーには、署名検証障害、トークンの有効期限、およびペイロードが大きくなります。デバッグスキルには、デバッグツールの使用とロギングが含まれます。 5.パフォーマンスの最適化とベストプラクティスには、適切な署名アルゴリズムの使用、有効期間を合理的に設定することが含まれます。

記事では、入力検証、認証、定期的な更新など、脆弱性から保護するためのフレームワークの重要なセキュリティ機能について説明します。

この記事では、フレームワークにカスタム機能を追加し、アーキテクチャの理解、拡張ポイントの識別、統合とデバッグのベストプラクティスに焦点を当てています。

PHP開発でPHPのCurlライブラリを使用してJSONデータを送信すると、外部APIと対話する必要があることがよくあります。一般的な方法の1つは、Curlライブラリを使用して投稿を送信することです。
