一聚教程网:一个值得你收藏的教程网站

最新下载

热门教程

Linux下LNMP性能如何监控

时间:2026-06-22 12:04:47 编辑:袖梨 来源:一聚教程网

Linux下LNMP性能监控实操指南

Linux下如何监控LNMP性能

一 监控体系与分层

  • 系统层:CPU、内存、磁盘IO、网络、负载等,使用top/htop、vmstat、iostat、free、df、ss等工具快速定位瓶颈。
  • 服务层:
    • Nginx:启用ngx_http_stub_status_module获取连接与请求指标;结合访问/错误日志分析吞吐与错误。
    • MySQL:使用mysqladmin status、SHOW STATUS/PROCESSLIST、慢查询日志定位慢SQL与连接压力。
    • PHP-FPM:通过pm.status_path暴露进程池状态,监控排队、慢请求与进程利用率。
  • 应用与日志层:定期分析Nginx、MySQL、PHP-FPM日志,配合Xdebug/Blackfire做代码级剖析。
  • 可视化与告警层:使用Prometheus + Grafana或Zabbix集中采集、可视化与告警。

二 快速上手命令清单

  • 系统资源与连接
    • 实时资源:top/htop;整体资源:vmstat 1、iostat -x 1、free -m、df -h。
    • 连接与端口:ss -tulpen | head、ss -s;网络与接口统计可用netstat(ss更快更现代)。
  • Nginx
    • 运行状态:sudo systemctl status nginx;配置校验:nginx -t;优雅重载:nginx -s reload。
    • 指标与日志:启用stub_status查看Active/Reading/Writing/Waiting与每秒请求;分析access.log/error.log。
  • MySQL
    • 服务与状态:sudo systemctl status mysql;命令行:mysqladmin status、mysqladmin --relative --sleep 5 extended-status;慢查询:SHOW VARIABLES LIKE ‘slow_query_log%’; SHOW VARIABLES LIKE ‘long_query_time’; 并分析慢日志。
  • PHP-FPM
    • 服务与池状态:sudo systemctl status php-fpm;配置pm.status_path(如**/status**),用curl http://127.0.0.1/status?json查看active processes、idle processes、queue等。

三 关键指标与阈值建议

层级关键指标常用命令/来源告警阈值建议
系统CPU使用率、负载(1/5/15)、iowaittop/vmstat 1、iostat -x 1负载持续>CPU核数;iowait>20%
系统内存使用率、Swap使用free -m可用内存低且Swap增长
系统磁盘空间、Inodedf -h、df -i可用空间<**20%**或Inode<10%
系统TCP连接数/状态ss -s、ss -tulpenTIME_WAIT>1万或连接数接近ulimit -n
NginxActive/Waiting、每秒请求、5xx比例stub_status、access.log5xx>**1%**或Waiting持续很高
MySQLThreads_connected、Threads_running、Slow_queriesSHOW STATUS、慢查询日志Threads_running>CPU核数;慢查询突增
PHP-FPMactive/idle、queue、slow requestspm.status_pathqueue>0持续;慢请求增多

四 可视化与告警落地

  • Prometheus + Grafana
    • 采集:部署node_exporter(系统)、nginx-exporter(Nginx stub_status)、mysqld_exporter(MySQL)、php-fpm-exporter(status)。
    • 可视化:导入Nginx/MySQL/PHP-FPM官方或社区仪表盘,构建总览→组件→实例三级视图。
    • 告警:用Alertmanager配置规则(如5xx、慢查询、连接堆积、磁盘告警),对接邮件/企业微信/钉钉/Slack。
  • Zabbix
    • 在主机上创建Nginx/MySQL/PHP-FPM监控项与触发器(基于状态页、命令输出、日志关键字)。
    • 使用模板与自动发现批量纳管实例,配置动作发送告警。

五 实战排障流程

  • 压测与观测并行:用wrk模拟并发,观察延迟与吞吐变化。示例:wrk -t12 -c100 -d30s --latency http://your-domain/;压测时实时查看ss -s、top/htop、iostat -x 1,定位连接、CPU、IO瓶颈。
  • Nginx排障:打开stub_status,关注Active/Waiting与每秒请求;若Waiting高且吞吐上不去,多为后端PHP-FPM或数据库处理慢。
  • MySQL排障:用mysqladmin status与SHOW PROCESSLIST查看活跃线程与锁等待;开启并分析慢查询日志,用pt-query-digest找出TOP慢SQL并建索引/改写。
  • PHP-FPM排障:打开pm.status_path,关注queue与slow requests;若queue>0持续,考虑增加pm.max_children/pm.start_servers或优化代码与SQL。
  • 日志与代码级:定期分析Nginx/PHP-FPM错误日志;用Xdebug/Blackfire定位热点函数与慢调用。

热门栏目