温馨提示×

ThinkPHP Linux环境如何监控

小樊
37
2025-12-06 12:06:42
栏目: 编程语言

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 -bvmstat 1 10pidstat -u 1 -p
    • 磁盘 IO:iostat -d -x -k 1 10iotoppidstat -d
    • 网络:ss -aA tcpiftop -i eth0nload
    • 历史与综合:sar -u 1sar -r 10 3sar -ddstat 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 天 的指标与日志,定期复盘 峰值并发、慢查询、队列积压 趋势,提前扩容或优化。

0