Performance bottlenecks generally refer to newly developed applications by developers.
For example,
An application developed in Java or C and deployed on an application server for processing user transaction requests.
For example,
A developer developed a payment processing program. During testing, it was discovered that
this payment processing program was unable to process concurrent payment requests sent by users. , can only be processed serially and cannot be processed in parallel, resulting in a very long processing response time for payment transactions. At this time, it can be considered that a performance bottleneck has occurred in the application.
This article will share with you an example of using XHProf to find PHP performance bottlenecks. It has a good reference value and I hope it can help everyone.
XHProf is an extension developed by Facebook to test PHP performance. This article records the method of using XHProf to optimize PHP performance and find performance bottlenecks in PHP applications.
1. Install Xhprof extension
//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
2. Modify php.ini
[xhprof] extension=xhprof.so xhprof.output_dir=/tmp
In the configuration, xhprof.output_dir specifies the location where the generated profile file is stored, we will specify it for /tmp.
3. Move the relevant files into the project
//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/
Configure a domain name, and the browser can access http://will.com/xhprof/xhprof_html/index.php
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; } }
4. Install graphivz
//需要安装graphviz否则查看性能图片时候会报failed to execute cmd: " dot -Tpng". stderr: `sh: dot: command not found ' yum -y install graphviz
5. Write test files
//入口文件的开始位置 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");
Complete code example (random red envelope demo)
<?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('min'=>1, 'max'=>10, 'chance'=>30),//金额:分 概率:百分之(默认为100%,不足100%按第一档计算) array('min'=>11, 'max'=>25, 'chance'=>60), array('min'=>26, 'max'=>50, 'chance'=>10), array('min'=>50, 'max'=>80, 'chance'=>0), array('min'=>80, 'max'=>100, 'chance'=>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['chance']>0) { $chance += $v['chance']*100;//扩大100倍 $level[$k] = $chance; } } $index = 0; $rand_num = mt_rand(1, 10000); foreach($level as $k=>$v) { if ($rand_num 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,最后我们输出了一个链接地址,使用改地址就可以看到本次请求的分析结果。
6. View analysis results
Run the business code first;
Then the browser opens http://will.com/xhprof/xhprof_html/index.php, click the last time to generate the xhprof file
Note the View Full Callgraph link in the middle, through which we can see the graphical analysis results
The red part in the figure indicates low performance , the part that takes a long time, we can optimize the system code according to which functions are marked in red
In addition, the meaning of the xhprof report field:
Function Name: method name .
Calls: The number of times the method has been called.
Calls%: The number of method calls as a percentage of the total number of method calls at the same level.
Incl.Wall Time(microsec): The time it takes for method execution, including the execution time of sub-methods. (Unit: microseconds)
IWall%: The percentage of time spent in method execution.
Excl. Wall Time (microsec): The time it takes to execute the method itself, excluding the execution time of sub-methods. (Unit: microseconds)
EWall%: The percentage of time spent executing the method itself.
Incl. CPU(microsecs): The CPU time spent on method execution, including the execution time of sub-methods. (Unit: microseconds)
ICpu%: The percentage of CPU time spent in method execution.
Excl. CPU (microsec): The CPU time spent executing the method itself, excluding the execution time of sub-methods. (Unit: microseconds)
ECPU%: The percentage of CPU time spent executing the method itself.
Incl.MemUse(bytes): The memory occupied by method execution, including the memory occupied by sub-method execution. (Unit: bytes)
IMemUse%: The percentage of memory occupied by method execution.
Excl.MemUse(bytes): The memory occupied by the execution of the method itself, excluding the memory occupied by the execution of sub-methods. (Unit: bytes)
EMemUse%: The percentage of memory occupied by the method itself.
Incl.PeakMemUse(bytes): Incl.MemUse peak value. (Unit: Bytes)
IPeakMemUse%: Incl.MemUse peak percentage.
Excl.PeakMemUse(bytes): Excl.MemUse peak value. Unit: (byte)
EPeakMemUse%: Excl.MemUse peak percentage.
Related recommendations:
JavaScript startup performance bottleneck analysis and solutions
Use xdebug to analyze the PHP program to find out the performance Bottleneck
Tracking PHP code performance bottleneck
The above is the detailed content of Use XHProf to find instances of PHP performance bottlenecks. For more information, please follow other related articles on the PHP Chinese website!

What’s still popular is the ease of use, flexibility and a strong ecosystem. 1) Ease of use and simple syntax make it the first choice for beginners. 2) Closely integrated with web development, excellent interaction with HTTP requests and database. 3) The huge ecosystem provides a wealth of tools and libraries. 4) Active community and open source nature adapts them to new needs and technology trends.

PHP and Python are both high-level programming languages that are widely used in web development, data processing and automation tasks. 1.PHP is often used to build dynamic websites and content management systems, while Python is often used to build web frameworks and data science. 2.PHP uses echo to output content, Python uses print. 3. Both support object-oriented programming, but the syntax and keywords are different. 4. PHP supports weak type conversion, while Python is more stringent. 5. PHP performance optimization includes using OPcache and asynchronous programming, while Python uses cProfile and asynchronous programming.

PHP is mainly procedural programming, but also supports object-oriented programming (OOP); Python supports a variety of paradigms, including OOP, functional and procedural programming. PHP is suitable for web development, and Python is suitable for a variety of applications such as data analysis and machine learning.

PHP originated in 1994 and was developed by RasmusLerdorf. It was originally used to track website visitors and gradually evolved into a server-side scripting language and was widely used in web development. Python was developed by Guidovan Rossum in the late 1980s and was first released in 1991. It emphasizes code readability and simplicity, and is suitable for scientific computing, data analysis and other fields.

PHP is suitable for web development and rapid prototyping, and Python is suitable for data science and machine learning. 1.PHP is used for dynamic web development, with simple syntax and suitable for rapid development. 2. Python has concise syntax, is suitable for multiple fields, and has a strong library ecosystem.

PHP remains important in the modernization process because it supports a large number of websites and applications and adapts to development needs through frameworks. 1.PHP7 improves performance and introduces new features. 2. Modern frameworks such as Laravel, Symfony and CodeIgniter simplify development and improve code quality. 3. Performance optimization and best practices further improve application efficiency.

PHPhassignificantlyimpactedwebdevelopmentandextendsbeyondit.1)ItpowersmajorplatformslikeWordPressandexcelsindatabaseinteractions.2)PHP'sadaptabilityallowsittoscaleforlargeapplicationsusingframeworkslikeLaravel.3)Beyondweb,PHPisusedincommand-linescrip

PHP type prompts to improve code quality and readability. 1) Scalar type tips: Since PHP7.0, basic data types are allowed to be specified in function parameters, such as int, float, etc. 2) Return type prompt: Ensure the consistency of the function return value type. 3) Union type prompt: Since PHP8.0, multiple types are allowed to be specified in function parameters or return values. 4) Nullable type prompt: Allows to include null values and handle functions that may return null values.


Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

AI Hentai Generator
Generate AI Hentai for free.

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Dreamweaver Mac version
Visual web development tools

WebStorm Mac version
Useful JavaScript development tools

Zend Studio 13.0.1
Powerful PHP integrated development environment