【PHP】获取PHP-FPM的状态信息

news2025/5/15 22:28:35

文章目录

  • 一、前言
  • 二、环境
  • 三、过程
    • 1)修改PHP-FPM配置文件
    • 2)修改Nginx配置文件
    • 3)访问页面
    • 4)修改状态页面端口

一、前言

PHP-FPM内置有一个状态页面,通过这个页面可以获取到FPM的一些状态信息(见下图),如果将这些信息输出到监控系统,可以方便地监控FPM的运行情况。
在这里插入图片描述
本文介绍如何调用这个页面。

二、环境

Nginx 1.19
PHP 8.2

三、过程

1)修改PHP-FPM配置文件

在FPM的进程池配置文件(通常名为www.conf)中找到;pm.status_path = /status这个配置项,去掉前面的;注释符号,并将值修改为:

pm.status_path = /fpm-status

这个是状态页面的路径,保持原样不修改也可以,但是我觉得用 fpm-status 这个名字更好,所以修改了一下:)

修改完后,优雅重启FPM:

kill -USR2 {FPM master进程pid}

# 或者:
service php8.2-fpm reload

如果你用的是docker,因为镜像一般不会安装ps等等多种命令,可能会导致比较难找到 FPM 的主进程pid,此时可以使用以下命令来优雅重启:

docker kill --signal USR2 {容器ID}

2)修改Nginx配置文件

假设PHP-FPM采用的是TCP socket监听方式,所在的服务器IP是10.0.0.2,监听端口是9000,添加以下location配置:

location = /fpm-status {
    access_log off;
    allow 127.0.0.1;
    fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
    include fastcgi_params;
    fastcgi_pass 10.0.0.2:9000;
}

因为上面pm.status_path的值为fpm-status,因此Nginx中的路径也须为fpm-status;

强烈建议用allow指令配置IP白名单,否则所有的IP都可以访问状态页面,泄露敏感信息;

修改完后,优雅重启Nginx:

nginx -s reload

3)访问页面

因为我们配置了IP白名单为127.0.0.1,所以只能在Nginx服务器本地访问状态页面:

curl "http://localhost/fpm-status"

如果没问题,会显示以下信息:

pool:                 www
process manager:      dynamic
start time:           15/Mar/2025:21:10:22 +0800
start since:          2609
accepted conn:        3
listen queue:         0
max listen queue:     0
listen queue len:     4096
idle processes:       2
active processes:     0
total processes:      2
max active processes: 1
max children reached: 0
slow requests:        0

每个字段的含义可以参阅官方文档

还可以通过一些参数来改变输出信息:

http://localhost/fpm-status              # 以文本方式输出基础信息
http://localhost/fpm-status?full         # 以文本方式输出基础信息 + 每个进程的信息
http://localhost/fpm-status?html         # 以HTML格式输出基础信息
http://localhost/fpm-status?openmetrics  # 以openmetrics格式输出基础信息(PHP 8.1新增)
http://localhost/fpm-status?json         # 以JSON格式输出基础信息
http://localhost/fpm-status?json&full    # 以JSON格式输出基础信息 + 每个进程的信息

4)修改状态页面端口

在旧版本的PHP中,状态页面的端口就是PHP-FPM的监听端口,在本文中是9000。

这样会有一个问题,如果所有worker进程都在处理耗时的用户请求,因为阻塞的原因,FPM就无法处理状态页面的请求了,可能会影响到监控系统的工作。

于是PHP 8.0给FPM新增了pm.status_listen配置项,将状态页面的端口单独隔离出来,例如将端口改为9001:

pm.status_listen = 9001

相应的,Nginx的location配置也要变更:

fastcgi_pass 10.0.0.2:9001;

这样,就可以通过9001端口访问状态页面了

注:更改端口后,原端口不会失效,仍然可以通过原端口访问状态页面

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2316937.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

(性能测试)性能测试工具 2.jmeter的环境搭建 3jmeter元件和4使用实例 5jmeter元件和参数化

目录 性能测试工具 性能测试工具 jemeter环境搭建 jmeter的常用目录介绍 jmeter修改语言和主题--jmeter界面的汉化 jmeter元件 jmeter元件和组件的介绍 jmeter的作用域原则 jmeter的执行顺序 案例:执行顺序 jmeter使用案例 jmeter线程组的介绍 jmeter…

Java 大视界 -- 基于 Java 的大数据实时流处理中的窗口操作与时间语义详解(135)

💖亲爱的朋友们,热烈欢迎来到 青云交的博客!能与诸位在此相逢,我倍感荣幸。在这飞速更迭的时代,我们都渴望一方心灵净土,而 我的博客 正是这样温暖的所在。这里为你呈上趣味与实用兼具的知识,也…

数据库的基本知识

目录 一、创建数据库和数据表1.1 创建数据库相关代码1.2 创建数据表1.3 约束条件1.3.1 主键约束1.3.2 非空约束1.3.3 唯一性约束1.3.4 默认约束1.3.5 自增字段 1.4 手工建表 二、数据查询功能2.1 sql 查询的7个关键词2.1.1 select2.1.2 from2.1.3 where2.1.4 group by2.1.5 hav…

失败的面试经历(ʘ̥∧ʘ̥)

一.面向对象的三大特性 1.封装:将对象内部的属性私有化,外部对象不能够直接访问,但是可以提供一些可以使外部对象操作内部属性的方法。 2.继承:类与类之间会有一些相似之处,但也会有一些异处,使得他们与众…

Android 7 及以上夜神模拟器,Fiddler 抓 https 包

文章目录 问题描述解决方案环境准备操作步骤1、导出 Fiddler 证书并修改成 .pem 和 .0 文件2、修改夜神模拟器配置3、打开夜神模拟器设备的 USB 调试选项4、将0725b47c.0证书放入夜神模拟器系统证书目录5、夜神模拟器 cmd 环境配置6、给 0725b47c.0 证书赋予权限7、打开 fiddle…

全国医院数据可视化分析系统

【大数据】全国医院数据可视化分析系统 (完整系统源码开发笔记详细部署教程)✅ 目录 一、项目简介二、项目界面展示三、项目视频展示 一、项目简介 🏥 项目名:医疗导航神器!——《基于大数据的微医挂号网医院数据可视…

音视频入门基础:RTCP专题(1)——RTCP官方文档下载

一、引言 实时传输控制协议(Real-time Transport Control Protocol或RTP Control Protocol或简写RTCP)是实时传输协议(RTP)的一个姐妹协议。RTCP由《RFC 3550》定义(取代废弃的《RFC 1889》)。RTP使用一个…

蓝桥杯专项复习——结构体、输入输出

目录 结构体&#xff1a;排序 输入输出 结构体&#xff1a;排序 [NOIP2007]奖学金 #include<iostream> #include<cstring> #include<algorithm>using namespace std;const int N310; int n;struct Student {int chinese,math,eng,sum;int idx; }Stu[N];//定…

工作记录 2017-01-06

工作记录 2017-01-06 序号 工作 相关人员 1 协助BPO进行Billing的工作。 修改CSV、EDI837的导入。 修改邮件上的问题。 更新RD服务器。 郝 修改的问题&#xff1a; 1、 In “Full Job Summary” (patient info.), sometime, the Visit->Facility is missed, then …

LLM(2):准备构建 LLM

在了解大语言模型一文中&#xff0c;对 LLM 做了初步介绍&#xff0c;本文接续前一篇文章的内容&#xff0c;简要介绍 LLM 的应用和构建过程。 1.2 LLM 的应用 由于大型语言模型&#xff08;LLMs&#xff09;在解析和理解非结构化文本数据方面具备先进能力&#xff0c;它们在…

pytest+allure+jenkins

本地运行参考&#xff1a;pytestallure 入门-CSDN博客 jenkins运行如下&#xff1a; 安装插件&#xff1a;allure 配置allure安装目录 配置pytest、allure 环境变量 配置流水线 进行build,结果如下 ,点击allure report 查看结果

【linux篇】--linux常见指令

文章目录 一、Linux基本概念 二、Linux入门 1.目录结构 2.Linux命令 *Linux基础命令 ls命令的选项&#xff1a; 3.目录切换相关命令&#xff08;cd & pwd) 4.相对&绝对路径和特殊路径符 4.1相对路径 4.2绝对路径 4.3 你特殊路径符 5.创建目录命令&#xff08;mkdir) 6.…

Kubernetes的组成和架构

Kubernetes&#xff08;K8s&#xff09;是一个开源的容器编排平台&#xff0c;用于自动化部署、扩展和管理容器化应用程序。它由多个组件组成&#xff0c;这些组件可以分为两类&#xff1a;控制平面&#xff08;Control Plane&#xff09;组件和节点&#xff08;Node&#xff0…

Android之RecyclerView列表拖动排序

文章目录 前言一、效果图二、实现步骤1.xml布局2.activity代码3.adapter 总结 前言 随着需求的变化&#xff0c;很多地方需要加拖动改变顺序的需求&#xff0c;用RecyclerView就可以实现列表拖动排序&#xff0c;列如像朋友圈图片拖动排序&#xff0c;或者音乐播放器列表拖动排…

C# WPF 基础知识学习(一)

一、WPF 简介 Windows Presentation Foundation&#xff08;WPF&#xff09;是微软推出的一款用于构建用户界面的框架&#xff0c;它为开发 Windows 桌面应用程序提供了统一的编程模型、语言和框架。WPF 将用户界面的设计与业务逻辑分离开来&#xff0c;采用了 XAML&#xff0…

MATLAB基于ResNet18的交通标志识别系统

1. 数据准备 数据集&#xff1a;该数据集包含了大量标注好的交通标志图片&#xff0c;每类标志都有不同的样本。数据预处理&#xff1a;图像需要进行一些基本的预处理&#xff0c;如调整大小、归一化等&#xff0c;以适应ResNet18的输入要求。 2. 网络设计 使用MATLAB自带的…

CSS3-流星雨

1. 绘制标签 <div class"container"><span></span> </div>2. 设置div背景 在百度上搜索一幅星空的图片 <style>* {/* 初始化 */margin: 0;padding: 0;}body {/* 高度100% */height: 100vh;/* 溢出隐藏 */overflow: hidden;}.contai…

数学建模 第一节

目录​​​​​​ 前言 一 优化模型的类型 二 线性规划1 线性规划2 三 0-1规划 总结 前言 数学建模主要是将问题转化为模型&#xff0c;然后再以编程的形式输出出来 算法都知道&#xff0c;数学建模也需要用到算法&#xff0c;但是不是主要以编程形式展示&#xff0c;而是…

平方矩阵问题

Ⅰ 回字形二维数组 #include <iostream> #include <iomanip> using namespace std; int main(){int n;while(cin>>n,n){for(int i0; i<n;i){for(int j0; j<n; j){int upi, downn-i1, leftj, rightn-j1;cout<<min(min(up,down),min(left,right)…

自动化立体仓库堆垛机HMI屏幕程序施耐德HMIGXU系列 Vijeo Designer功能设计

堆垛机HMI屏幕功能概况 在自动化立体仓库堆垛机的HMI屏幕程序里,有着施耐德HMIGXU系列Vijeo Designer功能设计。此HMI程序运用标准的工程组织结构,凭借拖拽方式迅速构建人机交互界面。 其主要功能涵盖:设备参数、设备状态、手动/自动操作控制、报警显示、IO信息监控等模块…