Heim Backend-Entwicklung PHP-Tutorial Verwenden Sie XHProf, um Instanzen von PHP-Leistungsengpässen zu finden. PHP-Instanzen

Verwenden Sie XHProf, um Instanzen von PHP-Leistungsengpässen zu finden. PHP-Instanzen

Dec 15, 2017 am 09:47 AM
php 瓶颈

Der Redakteur unten zeigt Ihnen ein Beispiel für die Verwendung von XHProf, um PHP-Leistungsengpässe zu finden. XHProf ist eine von Facebook entwickelte Erweiterung, um die Leistung von PHP zu testen Engpässe in PHP Verwenden Sie XHProf zur Leistungsoptimierung PHP in der Anwendung, um Leistungsengpässe zu finden. Es hat einen sehr guten Referenzwert und ich hoffe, dass es für alle hilfreich sein wird. Kommen Sie vorbei und werfen Sie einen Blick mit der Redaktion!

1. Installieren Sie die Xhprof-Erweiterung


//github上下载https://github.com/facebook/xhprof
unzip xhprof-master.zip 
cd xhprof-master/extension/
/usr/local/php/bin/phpize
./configure --with-php-config=/usr/local/php/bin/php-config --enable-xhprof
make && make install
Nach dem Login kopieren


2. Ändern Sie php.ini


[xhprof]
extension=xhprof.so
xhprof.output_dir=/tmp
Nach dem Login kopieren


Konfigurieren von xhprof.output_dir Gibt den Speicherort an, an dem die generierte Profildatei gespeichert wird. Wir geben ihn als /tmp an.

3. Verschieben Sie die zugehörigen Dateien in das Projekt


//xhprof下载压缩包中的xhprof_html和xhprof_lib
cp -r xhprof-master/xhprof_html /usr/local/nginx/html/xhprof/
cp -r xhprof-master/xhprof_lib /usr/local/nginx/html/xhprof/
Nach dem Login kopieren


Konfigurieren Sie einen Domänennamen und der Browser kann auf http://will.com/xhprof/xhprof_html/index.php zugreifen


server{
 listen 80;
 server_name will.com;
 location / {
  root /usr/local/nginx/html;
  index index.html;
 }
 location ~ \.php$ {
  root html;
  fastcgi_pass 127.0.0.1:9000;
  fastcgi_index index.php;
  fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
  include  fastcgi_params;
 }
 }
Nach dem Login kopieren


4. Installieren Sie graphivz


//需要安装graphviz否则查看性能图片时候会报failed to execute cmd: " dot -Tpng". stderr: `sh: dot: command not found '
yum -y install graphviz
Nach dem Login kopieren


5. Testdateien schreiben


//入口文件的开始位置
xhprof_enable(XHPROF_FLAGS_MEMORY | XHPROF_FLAGS_CPU);

业务逻辑...

//业务逻辑结束后
$xhprof_data = xhprof_disable();
include_once "/usr/local/nginx/html/xhprof/xhprof_lib/utils/xhprof_lib.php"; 
include_once "/usr/local/nginx/html/xhprof/xhprof_lib/utils/xhprof_runs.php"; 
$objXhprofRun = new XHProfRuns_Default();//数据会保存在php.ini中xhprof.output_dir设置的目录去中 
$run_id = $objXhprofRun->save_run($xhprof_data, "test");
Nach dem Login kopieren


Komplettcode Beispiel (Demo eines zufälligen roten Umschlags)


<?php
xhprof_enable(XHPROF_FLAGS_MEMORY | XHPROF_FLAGS_CPU);
function show($info)
{
 echo "<pre class="brush:php;toolbar:false">";
 print_r($info);
}

//不作数据校验
$rules = array(
 2=>array(&#39;min&#39;=>1, &#39;max&#39;=>10, &#39;chance&#39;=>30),//金额:分 概率:百分之(默认为100%,不足100%按第一档计算)
 array(&#39;min&#39;=>11, &#39;max&#39;=>25, &#39;chance&#39;=>60),
 array(&#39;min&#39;=>26, &#39;max&#39;=>50, &#39;chance&#39;=>10),
 array(&#39;min&#39;=>50, &#39;max&#39;=>80, &#39;chance&#39;=>0),
 array(&#39;min&#39;=>80, &#39;max&#39;=>100, &#39;chance&#39;=>0),
);
$total_money = 10000;//红包总金额
$res = array();
while($total_money>0)
{
 $index = getLevel($rules);
 $money = setMoney($rules, $index);
 if ($money > $total_money)//金额不足
 {
 $money = $total_money;
 $total_money = 0;
 } else {
 $total_money -= $money;
 }
 $res[] = ($index+1)."---".$money;
}
echo show($res);
echo $total_money . "<br/>";
//1.先确定档次
function getLevel($rules)
{
 $level = array();
 $chance = 0;
 foreach($rules as $k=>$v)
 {
 if ($v[&#39;chance&#39;]>0)
 {
  $chance += $v[&#39;chance&#39;]*100;//扩大100倍
  $level[$k] = $chance;
 }
 }
 $index = 0;
 $rand_num = mt_rand(1, 10000);
 foreach($level as $k=>$v)
 {
 if ($rand_num <= $v)
 {
  $index = $k;
  break;
 }
 }
 return $index;
}
//2.确定档次之后,再确定金额
function setMoney($rules, $index)
{
 $money = mt_rand($rules[$index][&#39;min&#39;]*10000, $rules[$index][&#39;max&#39;]*10000)/10000;
 $money = ceil($money);
 $money > 1 && $money = $money -1;//防止出现免单情况
 return $money;
}
$xhprof_data = xhprof_disable();
include_once "/usr/local/nginx/html/xhprof/xhprof_lib/utils/xhprof_lib.php"; 
include_once "/usr/local/nginx/html/xhprof/xhprof_lib/utils/xhprof_runs.php"; 
$objXhprofRun = new XHProfRuns_Default();//数据会保存在php.ini中xhprof.output_dir设置的目录去中 
$run_id = $objXhprofRun->save_run($xhprof_data, "test");
echo "http://will.com/xhprof/xhprof_html/index.php?run=$run_id&source=test";//变量$runId是本次请求生成分析结果的id,最后我们输出了一个链接地址,使用改地址就可以看到本次请求的分析结果。
Nach dem Login kopieren


6. Überprüfen Sie die Analyseergebnisse

Führen Sie zuerst den Geschäftscode aus;

Dann öffnet der Browser http://will.com/xhprof/xhprof_html/index.php, klicken Sie das letzte Mal, um die xhprof-Datei zu generieren

Beachten Sie den Link <span style="font-family:NSimsun">Vollständiges Callgraph anzeigen<code><span style="font-family:NSimsun">View Full Callgraph</span> in der Mitte was wir als grafische Analyseergebnisse sehen können

Der rote Teil im Bild ist der Teil mit geringerer Leistung und längerem Zeitverbrauch. Wir können bestimmen, welche Funktionen markiert sind rot Optimieren Sie den Systemcode

Außerdem bedeutet das xhprof-Berichtsfeld:

Funktionsname: Methodenname.

Aufrufe: Die Häufigkeit, mit der die Methode aufgerufen wurde.

Aufrufe %: Die Anzahl der Methodenaufrufe als Prozentsatz der Gesamtzahl der Methodenaufrufe auf derselben Ebene.

Incl.Wall Time (Mikrosekunden): Die Zeit, die für die Methodenausführung benötigt wird, einschließlich der Ausführungszeit von Untermethoden. (Einheit: Mikrosekunden)

IWall%: Der Prozentsatz der für die Methodenausführung aufgewendeten Zeit.

Exkl. Wall Time (Mikrosekunden): Die Zeit, die zum Ausführen der Methode selbst benötigt wird, ohne die Ausführungszeit von Untermethoden. (Einheit: Mikrosekunden)

EWall%: Der Prozentsatz der Zeit, die für die Ausführung der Methode selbst aufgewendet wurde.

Inkl. CPU (Mikrosekunden): CPU-Zeit, die für die Methodenausführung aufgewendet wird, einschließlich der Ausführungszeit von Untermethoden. (Einheit: Mikrosekunden)

ICpu%: Der Prozentsatz der CPU-Zeit, die für die Methodenausführung aufgewendet wird.

Exkl. CPU (Mikrosekunden): Die CPU-Zeit, die für die Ausführung der Methode selbst aufgewendet wurde, ohne die Ausführungszeit von Untermethoden. (Einheit: Mikrosekunden)

ECPU%: Der Prozentsatz der CPU-Zeit, die für die Ausführung der Methode selbst aufgewendet wurde.

Incl.MemUse(bytes): Der von der Methodenausführung belegte Speicher, einschließlich des von der Untermethodenausführung belegten Speichers. (Einheit: Bytes)

IMemUse%: Der Prozentsatz des durch die Methodenausführung belegten Speichers.

Excl.MemUse(bytes): Der von der Ausführung der Methode selbst belegte Speicher, ausgenommen der von der Ausführung von Untermethoden belegte Speicher. (Einheit: Bytes)

EMemUse%: Der Prozentsatz des Speichers, der durch die Ausführung der Methode selbst belegt wird.

Incl.PeakMemUse(bytes): Incl.MemUse-Spitzenwert. (Einheit: Bytes)

IPeakMemUse%: Incl.MemUse-Spitzenprozentsatz.

Excl.PeakMemUse(bytes): Excl.MemUse-Spitzenwert. Einheit: (Byte)

EPeakMemUse%: Excl.MemUse Spitzenprozentsatz.

Das obige Beispiel für die Verwendung von XHProf zum Auffinden von PHP-Leistungsengpässen ist der gesamte vom Herausgeber geteilte Inhalt. Ich hoffe, er kann Ihnen eine Referenz geben! !

Verwandte Empfehlungen:

Verwenden Sie XHProf, um Fälle von PHP-Leistungsengpässen zu finden

So integrieren Sie Snappy in xhprof in PHP

Bild- und Textcode-Tutorial zur Installation und Verwendung des xhprof-Leistungsanalysetools unter PHP7

Das obige ist der detaillierte Inhalt vonVerwenden Sie XHProf, um Instanzen von PHP-Leistungsengpässen zu finden. PHP-Instanzen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
2 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Repo: Wie man Teamkollegen wiederbelebt
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Abenteuer: Wie man riesige Samen bekommt
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

CakePHP-Projektkonfiguration CakePHP-Projektkonfiguration Sep 10, 2024 pm 05:25 PM

In diesem Kapitel werden wir die Umgebungsvariablen, die allgemeine Konfiguration, die Datenbankkonfiguration und die E-Mail-Konfiguration in CakePHP verstehen.

PHP 8.4 Installations- und Upgrade-Anleitung für Ubuntu und Debian PHP 8.4 Installations- und Upgrade-Anleitung für Ubuntu und Debian Dec 24, 2024 pm 04:42 PM

PHP 8.4 bringt mehrere neue Funktionen, Sicherheitsverbesserungen und Leistungsverbesserungen mit einer beträchtlichen Menge an veralteten und entfernten Funktionen. In dieser Anleitung wird erklärt, wie Sie PHP 8.4 installieren oder auf PHP 8.4 auf Ubuntu, Debian oder deren Derivaten aktualisieren. Obwohl es möglich ist, PHP aus dem Quellcode zu kompilieren, ist die Installation aus einem APT-Repository wie unten erläutert oft schneller und sicherer, da diese Repositorys in Zukunft die neuesten Fehlerbehebungen und Sicherheitsupdates bereitstellen.

CakePHP Datum und Uhrzeit CakePHP Datum und Uhrzeit Sep 10, 2024 pm 05:27 PM

Um in cakephp4 mit Datum und Uhrzeit zu arbeiten, verwenden wir die verfügbare FrozenTime-Klasse.

CakePHP-Datei hochladen CakePHP-Datei hochladen Sep 10, 2024 pm 05:27 PM

Um am Datei-Upload zu arbeiten, verwenden wir den Formular-Helfer. Hier ist ein Beispiel für den Datei-Upload.

CakePHP-Routing CakePHP-Routing Sep 10, 2024 pm 05:25 PM

In diesem Kapitel lernen wir die folgenden Themen im Zusammenhang mit dem Routing kennen.

Besprechen Sie CakePHP Besprechen Sie CakePHP Sep 10, 2024 pm 05:28 PM

CakePHP ist ein Open-Source-Framework für PHP. Es soll die Entwicklung, Bereitstellung und Wartung von Anwendungen erheblich vereinfachen. CakePHP basiert auf einer MVC-ähnlichen Architektur, die sowohl leistungsstark als auch leicht zu verstehen ist. Modelle, Ansichten und Controller gu

So richten Sie Visual Studio-Code (VS-Code) für die PHP-Entwicklung ein So richten Sie Visual Studio-Code (VS-Code) für die PHP-Entwicklung ein Dec 20, 2024 am 11:31 AM

Visual Studio Code, auch bekannt als VS Code, ist ein kostenloser Quellcode-Editor – oder eine integrierte Entwicklungsumgebung (IDE) –, die für alle gängigen Betriebssysteme verfügbar ist. Mit einer großen Sammlung von Erweiterungen für viele Programmiersprachen kann VS Code c

CakePHP erstellt Validatoren CakePHP erstellt Validatoren Sep 10, 2024 pm 05:26 PM

Der Validator kann durch Hinzufügen der folgenden zwei Zeilen im Controller erstellt werden.

See all articles