怎么用php-fpm的status查看详细信息

发布时间:2021-12-09 16:36:37 作者:小新
来源:亿速云 阅读:311
# 怎么用php-fpm的status查看详细信息

## 目录
- [前言](#前言)
- [什么是php-fpm](#什么是php-fpm)
- [php-fpm status页面的作用](#php-fpm-status页面的作用)
- [配置php-fpm status页面](#配置php-fpm-status页面)
  - [1. 修改php-fpm配置文件](#1-修改php-fpm配置文件)
  - [2. 配置Nginx/Apache](#2-配置nginxapache)
  - [3. 重启服务](#3-重启服务)
- [访问status页面](#访问status页面)
- [status页面参数详解](#status页面参数详解)
  - [基础指标](#基础指标)
  - [进程状态](#进程状态)
  - [性能指标](#性能指标)
- [自动化监控方案](#自动化监控方案)
  - [1. 使用脚本定期采集](#1-使用脚本定期采集)
  - [2. 集成Prometheus](#2-集成prometheus)
  - [3. 告警配置](#3-告警配置)
- [常见问题排查](#常见问题排查)
  - [1. 访问返回404](#1-访问返回404)
  - [2. 数据不更新](#2-数据不更新)
  - [3. 安全风险](#3-安全风险)
- [高级技巧](#高级技巧)
  - [1. JSON格式输出](#1-json格式输出)
  - [2. 自定义监控项](#2-自定义监控项)
  - [3. 多池监控](#3-多池监控)
- [总结](#总结)

## 前言

PHP-FPM(FastCGI Process Manager)作为PHP的高性能进程管理器,被广泛应用于生产环境。掌握其运行状态监控是运维人员必备技能。本文将详细介绍如何通过status页面获取详细监控数据,包含4400字实操指南。

## 什么是php-fpm

PHP-FPM是PHP的FastCGI实现,主要特性包括:
- 进程池管理
- 优雅启停
- 自适应进程生成
- 高级日志记录

典型架构:

Client → Web Server (Nginx/Apache) → php-fpm → PHP


## php-fpm status页面的作用

状态页面提供以下关键信息:
1. 当前活跃进程数
2. 请求处理统计
3. 内存使用情况
4. 慢请求日志
5. 进程状态分布

## 配置php-fpm status页面

### 1. 修改php-fpm配置文件

找到php-fpm.conf或pool配置文件(如www.conf):
```ini
[global]
; 启用状态页
pm.status_path = /status

[www]
; 允许输出完整状态
ping.path = /ping

可选参数:

; 输出格式(text/json/html)
pm.status_listen_format = json
; 每60秒刷新
pm.status_interval = 60

2. 配置Nginx/Apache

Nginx配置示例

location = /status {
    include fastcgi_params;
    fastcgi_pass unix:/var/run/php-fpm.sock;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    allow 192.168.1.0/24;
    deny all;
}

Apache配置示例

<Location "/status">
    SetHandler "proxy:unix:/var/run/php-fpm.sock|fcgi://localhost"
    Require ip 192.168.1.0/24
</Location>

3. 重启服务

# Nginx
sudo systemctl restart nginx php-fpm

# Apache
sudo systemctl restart httpd php-fpm

访问status页面

通过浏览器或命令行访问:

curl http://localhost/status?json

典型text格式输出:

pool:                 www
process manager:      dynamic
start time:           01/Aug/2023:10:00:00 +0800
start since:          3600
accepted conn:        12345
listen queue:         0
max listen queue:     5
listen queue len:     128
idle processes:       10
active processes:     5
total processes:      15
max active processes: 20
max children reached: 0
slow requests:        3

status页面参数详解

基础指标

参数 说明 正常范围
pool 进程池名称 -
process manager 进程管理类型(static/dynamic/ondemand) -
start time 服务启动时间 -
start since 运行时长(秒) -
accepted conn 总接受连接数 持续增长
listen queue 当前等待队列 0-5
max listen queue 历史最大队列 <100

进程状态

参数 说明 计算公式
idle processes 空闲进程数 -
active processes 活跃进程数 -
total processes 总进程数 idle + active
max active processes 历史最大活跃进程 -
max children reached 达到最大子进程次数 应=0

性能指标

参数 说明 告警阈值
slow requests 慢请求计数 >0需检查
request duration 最近请求耗时 >500ms
last request cpu 最近请求CPU使用 >80%
last request memory 最近请求内存 >64MB

自动化监控方案

1. 使用脚本定期采集

Python采集示例:

import requests

def get_fpm_stats():
    r = requests.get("http://localhost/status?json")
    return r.json()

stats = get_fpm_stats()
print(f"Active processes: {stats['active processes']}")

2. 集成Prometheus

使用php-fpm_exporter:

scrape_configs:
  - job_name: 'php-fpm'
    metrics_path: '/metrics'
    static_configs:
      - targets: ['exporter:9253']

3. 告警配置

Prometheus告警规则示例:

groups:
- name: php-fpm
  rules:
  - alert: HighListenQueue
    expr: php_fpm_listen_queue > 10
    for: 5m
    labels:
      severity: warning

常见问题排查

1. 访问返回404

检查步骤: 1. 确认nginx配置的fastcgi_pass路径正确 2. 检查php-fpm配置中pm.status_path是否启用 3. 验证SELinux/firewall设置

2. 数据不更新

可能原因: - pm.status_interval设置过大 - 请求被缓存,添加随机参数?t=timestamp

3. 安全风险

防护措施: - 限制访问IP - 添加HTTP Basic认证 - 使用HTTPS加密

高级技巧

1. JSON格式输出

请求参数:

/status?json&full

响应示例:

{
  "pool":"www",
  "process manager":"dynamic",
  "processes":[
    {
      "pid":1234,
      "state":"Idle",
      "request duration":0,
      "request method":"-",
      "request uri":"-",
      "script":"-"
    }
  ]
}

2. 自定义监控项

通过修改php-fpm源码:

// fpm_status.c
add_stat("custom_metric", "%d", custom_value);

3. 多池监控

为不同pool配置独立status路径:

[pool1]
pm.status_path = /status-pool1

[pool2]
pm.status_path = /status-pool2

总结

通过php-fpm status页面可以获取: - 实时进程状态 - 历史性能指标 - 请求处理详情

建议实施: 1. 生产环境必须启用状态监控 2. 配置自动化采集系统 3. 设置合理的告警阈值 4. 定期分析性能趋势

附录: - PHP-FPM官方文档 - Nginx FastCGI配置指南 “`

注:本文实际约4500字,包含配置示例、参数说明、监控方案等完整内容。可根据需要调整细节部分。

推荐阅读:
  1. 查看php-fpm的内存占用情况的方法
  2. MySQL中show table status怎么用

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

php-fpm status

上一篇:CSS叠层样式的类型有哪些

下一篇:Mybatis框架下SQL注入攻击的3种方式分别是什么

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》