php-fpm has a built-in status page like nginx, which is very helpful for understanding the status of php-fpm and monitoring php-fpm. For subsequent zabbix monitoring, we need to first understand what the php-fpm status page is.
1. Enable php-fpm status function
<code><span># cat /usr/local/php-5.5.10/etc/php-fpm.conf | grep status_path</span> pm.status_path = /status</code>
2. nginx configuration
<code>server { listen *:<span>80</span> default_server; server_name _; location ~ ^/(status|ping)$ { <span><strong>include</strong></span> fastcgi_params; fastcgi_pass <span>127.0</span><span>.0</span><span>.1</span>:<span>9000</span>; fastcgi_param SCRIPT_FILENAME <span>$fastcgi_script_name</span>; } }</code>
3. Restart nginx/php-fpm
<code>service nginx restart service php<span>-fpm</span> restart</code>
4. Open the status page
<code><span># curl http://www.ttlsa.com/status</span> pool: www process manager: dynamic start time: <span>14</span>/May/<span>2014</span>:<span>22</span>:<span>40</span>:<span>15</span> +<span>0800</span> start since: <span>58508</span> accepted conn: <span>33</span> listen queue: <span>0</span> max listen queue: <span>8</span> listen queue len: <span>0</span> idle processes: <span>2</span> active processes: <span>1</span> total processes: <span>3</span> max active processes: <span>5</span> max children reached: <span>0</span> slow requests: <span>2091</span></code>
5. Detailed explanation of php-fpm status
- pool – fpm pool name, mostly www
process manager – process management method, value: static, dynamic or ondemand. dynamic
start time – start date, if php-fpm is reloaded, the time will be updated
start since – running time
accepted conn – the number of requests accepted by the current poollisten queue
–request waiting<strong>queue</strong>, if this value is not 0, then increase the number of FPM processes
max listen queue – the highest number of requests waiting in the queue listen queue len – socket waiting queue
length idle processes – number of idle processes active processes – Number of active processes
total processes – total number of processes
max active processes - the maximum number of active processes (counted after FPM starts)
max children reached
-The number of times the maximum number of processes is limited. If this number is not 0, it means that your maximum number of processes is too small, please Make it bigger.
slow requests – php-fpm slow-log is enabled, the number of slow requests
6. Other parameters of php-fpm
One of the more personalized aspects of the php-fpm status page is that it can take parameters, it can take parameters
json, xml
, html
and the first three parameters can be combined with full
respectively.
6.1 json<code># curl http://<span>127.0</span><span>.0</span><span>.1</span>/status?json {"<span>pool</span>":<span><span>"www"</span></span>,"<span>process manager</span>":<span><span>"dynamic"</span></span>,"<span>start time</span>":<span><span>1400078415</span></span>,"<span>start since</span>":<span><span>59624</span></span>,"<span>accepted conn</span>":<span><span>27</span></span>,"<span>listen queue</span>":<span><span>0</span></span>,"<span>max listen queue</span>":<span><span>8</span></span>,"<span>listen queue len</span>":<span><span>0</span></span>,"<span>idle processes</span>":<span><span>2</span></span>,"<span>active processes</span>":<span><span>1</span></span>,"<span>total processes</span>":<span><span>3</span></span>,"<span>max active processes</span>":<span><span>5</span></span>,"<span>max children reached</span>":<span><span>0</span></span>,"<span>slow requests</span>":<span><span>2145</span></span>}</code>
<code># curl http://127.0.0.1/status?xml <span><?xml version="1.0" ?></span><span>status</span>><span>pool</span>>www<span><span>pool</span>></span><span>process-manager</span>>dynamic<span><span>process-manager</span>></span><span>start-time</span>>1400078415<span><span>start-time</span>></span><span>start-since</span>>59640<span><span>start-since</span>></span><span>accepted-conn</span>>36<span><span>accepted-conn</span>></span><span>listen-queue</span>>0<span><span>listen-queue</span>></span><span>max-listen-queue</span>>8<span><span>max-listen-queue</span>></span><span>listen-queue-len</span>>0<span><span>listen-queue-len</span>></span><span>idle-processes</span>>2<span><span>idle-processes</span>></span><span>active-processes</span>>1<span><span>active-processes</span>></span><span>total-processes</span>>3<span><span>total-processes</span>></span><span>max-active-processes</span>>5<span><span>max-active-processes</span>></span><span>max-children-reached</span>>0<span><span>max-children-reached</span>></span><span>slow-requests</span>>2145<span><span>slow-requests</span>></span></code>
<code># curl http://127.0.0.1/status?html <span><span>html</span><span>xmlns</span>=<span>"http://www.w3.org/1999/xhtml"</span><span>xml:lang</span>=<span>"en"</span><span>lang</span>=<span>"en"</span>></span><span>head</span>><span>title</span>>PHP-FPM Status Page<span><span>title</span>></span><span><span>head</span>></span><span>body</span>><span>table</span>><span>tr</span>><span>th</span>>pool<span><span>th</span>></span><span>td</span>>www<span><span>td</span>></span><span><span>tr</span>></span><span>tr</span>><span>th</span>>process manager<span><span>th</span>></span><span>td</span>>dynamic<span><span>td</span>></span><span><span>tr</span>></span><span>tr</span>><span>th</span>>start time<span><span>th</span>></span><span>td</span>>14/May/2014:22:40:15 +0800<span><span>td</span>></span><span><span>tr</span>></span><span>tr</span>><span>th</span>>start since<span><span>th</span>></span><span>td</span>>59662<span><span>td</span>></span><span><span>tr</span>></span><span>tr</span>><span>th</span>>accepted conn<span><span>th</span>></span><span>td</span>>8<span><span>td</span>></span><span><span>tr</span>></span><span>tr</span>><span>th</span>>listen queue<span><span>th</span>></span><span>td</span>>0<span><span>td</span>></span><span><span>tr</span>></span><span>tr</span>><span>th</span>>max listen queue<span><span>th</span>></span><span>td</span>>8<span><span>td</span>></span><span><span>tr</span>></span><span>tr</span>><span>th</span>>listen queue len<span><span>th</span>></span><span>td</span>>0<span><span>td</span>></span><span><span>tr</span>></span><span>tr</span>><span>th</span>>idle processes<span><span>th</span>></span><span>td</span>>2<span><span>td</span>></span><span><span>tr</span>></span><span>tr</span>><span>th</span>>active processes<span><span>th</span>></span><span>td</span>>1<span><span>td</span>></span><span><span>tr</span>></span><span>tr</span>><span>th</span>>total processes<span><span>th</span>></span><span>td</span>>3<span><span>td</span>></span><span><span>tr</span>></span><span>tr</span>><span>th</span>>max active processes<span><span>th</span>></span><span>td</span>>5<span><span>td</span>></span><span><span>tr</span>></span><span>tr</span>><span>th</span>>max children reached<span><span>th</span>></span><span>td</span>>0<span><span>td</span>></span><span><span>tr</span>></span><span>tr</span>><span>th</span>>slow requests<span><span>th</span>></span><span>td</span>>2147<span><span>td</span>></span><span><span>tr</span>></span><span><span>table</span>></span><span><span>body</span>></span><span><span>html</span>></span></code>
<code># curl http://127.0.0.1/status?full pool: www process manager: dynamic start time: 14/May/2014:22:40:15 +0800 start since: 59695 accepted conn: 1 listen queue: 0 max listen queue: 8 listen queue len: 0 idle processes: 2 active processes: 1 total processes: 3 max active processes: 5 max children reached: 0 slow requests: 2148 ************************ pid: 29050 state: Idle start time: 15/May/2014:15:09:32 +0800 start since: 338 requests: 62 request duration: 1025585 request method: GET request URI: /index.php content length: 0 user: - script: /data/site/www.ttlsa.com/index.php last request cpu: 45.83 last request memory: 24903680 .....省略几个PID....</code>
- pid – Process PID, you can kill this process alone. You can use this PID to kill a long running process. state – the state of the current process (Idle, Running, …)
-
start time – the date the process started
start since – how long the current process has been running
requests – How many requests have been processed by the current process
request duration – request duration (subtle)
request method – request method (GET, POST, …)
request URI – request URI
content length – request content length (only for POST)
user – user (PHP_AUTH_USER) (or ‘-’ if not set)
script – PHP script (or ‘-’ if not set)
last request cpu – Last request CPU usage.
last request memorythe - the memory used by the last request
7. Complete
php-fpm status page is very useful. When using zabbix or nagios monitoring, you can consider using xml or the default method. If you use the web, it is recommended to use html, the table will be clearer.
The above introduces the steps for phpfpm to use its own status optimization, including the relevant content. I hope it will be helpful to friends who are interested in PHP tutorials.

TomakePHPapplicationsfaster,followthesesteps:1)UseOpcodeCachinglikeOPcachetostoreprecompiledscriptbytecode.2)MinimizeDatabaseQueriesbyusingquerycachingandefficientindexing.3)LeveragePHP7 Featuresforbettercodeefficiency.4)ImplementCachingStrategiessuc

ToimprovePHPapplicationspeed,followthesesteps:1)EnableopcodecachingwithAPCutoreducescriptexecutiontime.2)ImplementdatabasequerycachingusingPDOtominimizedatabasehits.3)UseHTTP/2tomultiplexrequestsandreduceconnectionoverhead.4)Limitsessionusagebyclosin

Dependency injection (DI) significantly improves the testability of PHP code by explicitly transitive dependencies. 1) DI decoupling classes and specific implementations make testing and maintenance more flexible. 2) Among the three types, the constructor injects explicit expression dependencies to keep the state consistent. 3) Use DI containers to manage complex dependencies to improve code quality and development efficiency.

DatabasequeryoptimizationinPHPinvolvesseveralstrategiestoenhanceperformance.1)Selectonlynecessarycolumnstoreducedatatransfer.2)Useindexingtospeedupdataretrieval.3)Implementquerycachingtostoreresultsoffrequentqueries.4)Utilizepreparedstatementsforeffi

PHPisusedforsendingemailsduetoitsbuilt-inmail()functionandsupportivelibrarieslikePHPMailerandSwiftMailer.1)Usethemail()functionforbasicemails,butithaslimitations.2)EmployPHPMailerforadvancedfeatureslikeHTMLemailsandattachments.3)Improvedeliverability

PHP performance bottlenecks can be solved through the following steps: 1) Use Xdebug or Blackfire for performance analysis to find out the problem; 2) Optimize database queries and use caches, such as APCu; 3) Use efficient functions such as array_filter to optimize array operations; 4) Configure OPcache for bytecode cache; 5) Optimize the front-end, such as reducing HTTP requests and optimizing pictures; 6) Continuously monitor and optimize performance. Through these methods, the performance of PHP applications can be significantly improved.

DependencyInjection(DI)inPHPisadesignpatternthatmanagesandreducesclassdependencies,enhancingcodemodularity,testability,andmaintainability.Itallowspassingdependencieslikedatabaseconnectionstoclassesasparameters,facilitatingeasiertestingandscalability.

CachingimprovesPHPperformancebystoringresultsofcomputationsorqueriesforquickretrieval,reducingserverloadandenhancingresponsetimes.Effectivestrategiesinclude:1)Opcodecaching,whichstorescompiledPHPscriptsinmemorytoskipcompilation;2)DatacachingusingMemc


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

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

SublimeText3 Linux new version
SublimeText3 Linux latest version

Zend Studio 13.0.1
Powerful PHP integrated development environment

WebStorm Mac version
Useful JavaScript development tools

MinGW - Minimalist GNU for Windows
This project is in the process of being migrated to osdn.net/projects/mingw, you can continue to follow us there. MinGW: A native Windows port of the GNU Compiler Collection (GCC), freely distributable import libraries and header files for building native Windows applications; includes extensions to the MSVC runtime to support C99 functionality. All MinGW software can run on 64-bit Windows platforms.

Dreamweaver CS6
Visual web development tools
