插件窝 干货文章 Linux服务器上LNMP性能监控方法

Linux服务器上LNMP性能监控方法

监控 MySQL Nginx status 766    来源:    2025-05-06

LNMP性能监控方法指南

作为Linux服务器上常见的Web服务架构,LNMP(Linux+Nginx+MySQL+PHP)的性能监控至关重要。以下是全面的监控方法和工具建议:

1. 系统级监控

基础工具

  • top/htop:实时查看CPU、内存使用情况
  • vmstat:监控系统进程、内存、I/O等
  • iostat:磁盘I/O监控
  • netstat/ss:网络连接监控
  • dmesg:查看系统日志和错误信息

推荐工具

  • sar(sysstat包):系统活动报告,可记录历史数据

    sar -u 1 3  # CPU使用率,每秒1次,共3次
    sar -r      # 内存使用情况
    sar -b      # I/O统计
    
  • nmon:综合性能监控工具

    nmon -f -s 30 -c 120 -t  # 每30秒采集一次,共120次,带时间戳
    

2. Nginx监控

基础监控

  • nginx -t:检查配置语法
  • nginx -s reload:平滑重载配置

状态模块

启用ngx_http_stub_status_module

location /nginx_status {
    stub_status on;
    access_log off;
    allow 127.0.0.1;
    deny all;
}

访问输出示例:

Active connections: 291
server accepts handled requests
 16630948 16630948 31070465
Reading: 6 Writing: 179 Waiting: 106

日志分析

  • access.log:分析请求模式、响应时间
  • error.log:监控错误

推荐工具: - goaccess:实时日志分析 bash goaccess /var/log/nginx/access.log -a - awstats:详细统计分析

3. MySQL监控

基础命令

  • SHOW STATUS:查看服务器状态变量
  • SHOW PROCESSLIST:查看当前连接
  • SHOW ENGINE INNODB STATUS:InnoDB状态

性能监控工具

  • mysqladmin

    mysqladmin -u root -p extended-status
    mysqladmin -u root -p processlist
    
  • mytop:类似top的MySQL监控工具

    mytop -u root -p password
    
  • pt-mysql-summary(Percona Toolkit):全面MySQL状态报告

慢查询日志

SET GLOBAL slow_query_log = 'ON';
SET GLOBAL long_query_time = 1;  # 超过1秒的查询
SET GLOBAL slow_query_log_file = '/var/log/mysql/mysql-slow.log';

分析工具:

mysqldumpslow /var/log/mysql/mysql-slow.log
pt-query-digest /var/log/mysql/mysql-slow.log

4. PHP监控

PHP-FPM状态页

启用状态页:

pm.status_path = /status

Nginx配置:

location ~ ^/(status|ping)$ {
    include fastcgi_params;
    fastcgi_pass 127.0.0.1:9000;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}

访问输出示例:

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

OPcache监控

<?php
print_r(opcache_get_status());
?>

XHProf/XHGui:PHP性能分析工具

5. 综合监控方案

开源工具

  • Prometheus + Grafana

    • 使用nginx_exporter、mysqld_exporter、php-fpm_exporter采集数据
    • Grafana可视化展示
  • Zabbix:企业级监控方案,支持LNMP全栈监控

  • Netdata:实时性能监控仪表盘

    # 一键安装
    bash <(curl -Ss https://my-netdata.io/kickstart.sh)
    

商业解决方案

  • New Relic
  • Datadog
  • Dynatrace

6. 关键指标报警设置

建议设置以下报警阈值: - CPU使用率 > 80%持续5分钟 - 内存使用率 > 90% - 磁盘空间 < 20% - Nginx 5xx错误率 > 1% - MySQL连接数 > max_connections的80% - PHP-FPM进程池耗尽

7. 性能优化建议

根据监控结果可考虑: - Nginx:调整worker_processes、worker_connections - MySQL:优化缓冲池大小、查询缓存 - PHP-FPM:调整pm.max_children等进程管理参数 - 系统:内核参数优化、swap配置

通过以上监控方法,您可以全面掌握LNMP环境的运行状态,及时发现并解决性能瓶颈问题。