Linux环境下监控 ThinkPHP 的实用方案
一 进程与队列的保活监控
- 使用 Supervisor 管理常驻进程(如 think_queue:work / queue:listen、自定义命令),实现异常退出自动拉起、集中日志与统一启停。
- 示例配置(/etc/supervisor/conf.dphp_queue.conf 或子目录 .ini):
- 单进程
[program:tp6_queue]
command=/usr/bin/php /www/wwwroot/your-project queue:work --queue=default --tries=3
directory=/www/wwwroot/your-project
user=www-data
autostart=true
autorestart=true
redirect_stderr=true
stdout_logfile=/var/log/supervisor/tp6_queue.out.log
stderr_logfile=/var/log/supervisor/tp6_queue.err.log
- 多进程(并发消费)
[program:tp6_queue]
command=/usr/bin/php /www/wwwroot/your-project queue:work --queue=default --tries=3
directory=/www/wwwroot/your-project
process_name=%(process_num)02d
numprocs=5
autostart=true
autorestart=true
redirect_stderr=true
stdout_logfile=/var/log/supervisor/tp6_queue.out.log
stderr_logfile=/var/log/supervisor/tp6_queue.err.log
- 常用命令
- 重新加载并启动:supervisorctl reread && supervisorctl update
- 启停进程:supervisorctl start|stop|restart tp6_queue
- 查看状态:supervisorctl status
- 建议将日志目录(如 /var/log/supervisor/)纳入 logrotate,避免磁盘被撑满。
二 系统与应用性能监控
- 系统资源(CPU、内存、IO、网络)快速排查
- CPU/内存/负载:top -n 1 -b、vmstat 1 10、pidstat -u 1 -p
- 磁盘 IO:iostat -d -x -k 1 10、iotop、pidstat -d
- 网络:ss -aA tcp、iftop -i eth0、nload
- 历史与综合:sar -u 1、sar -r 10 3、sar -d、dstat 2 10
- PHP 与框架层性能分析
- XHProf(函数级耗时/内存):安装扩展后在关键入口开启采样,保存 run_id 做离线分析,定位慢函数与内存热点。
- Datadog PHP StatsD(应用指标):在 TP 中绑定 DogStatsd,上报自定义计时/计数,如接口耗时、队列处理时长、异常计数等,在控制台做可视化与告警。
三 日志与告警闭环
- 日志集中与轮转
- Web/PHP-FPM 错误日志、应用日志、队列日志统一落盘;为 Supervisor 日志配置 logrotate(按日/按大小切割、保留份数、压缩)。
- 主动告警
- 系统层:基于 sar/pidstat/iostat 输出或 Prometheus Node Exporter + Alertmanager 配置阈值告警(如 CPU>80% 持续5分钟、磁盘使用率>85%、队列进程数不足)。
- 应用层:在 Datadog 配置基于指标的 阈值/异常 告警(如接口 P95 延迟、队列积压、失败重试激增)。
- 健康检查
- 对外提供 /health 接口(检查 DB/Redis/缓存 连通性),由 Nginx/负载均衡 或 Kubernetes Liveness 定期探测,异常时自动摘除实例。
四 快速落地清单
- 进程保活:部署 Supervisor,为 think_queue 与自定义命令配置 autostart/autorestart,设置 stdout/stderr 日志与 logrotate。
- 即刻排障:准备常用命令清单(如 top/vmstat/iostat/ss/iftop),在高峰期抓取 1–5 分钟 的关键指标与日志片段。
- 性能洞察:在开发/预发环境接入 XHProf,对慢接口/慢任务做函数级剖析;线上以 采样 为主,避免性能开销。
- 指标与告警:接入 Datadog(或开源替代),上报 接口耗时、队列处理时长、失败计数 等核心指标,配置 P95/P99 与 错误率 告警。
- 容量与趋势:保留 7–30 天 的指标与日志,定期复盘 峰值并发、慢查询、队列积压 趋势,提前扩容或优化。