作为Linux服务器上常见的Web服务架构,LNMP(Linux+Nginx+MySQL+PHP)的性能监控至关重要。以下是全面的监控方法和工具建议:
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次,带时间戳
启用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
推荐工具:
- goaccess:实时日志分析
bash
goaccess /var/log/nginx/access.log -a
- awstats:详细统计分析
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
启用状态页:
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
<?php
print_r(opcache_get_status());
?>
Prometheus + Grafana:
Zabbix:企业级监控方案,支持LNMP全栈监控
Netdata:实时性能监控仪表盘
# 一键安装
bash <(curl -Ss https://my-netdata.io/kickstart.sh)
建议设置以下报警阈值: - CPU使用率 > 80%持续5分钟 - 内存使用率 > 90% - 磁盘空间 < 20% - Nginx 5xx错误率 > 1% - MySQL连接数 > max_connections的80% - PHP-FPM进程池耗尽
根据监控结果可考虑: - Nginx:调整worker_processes、worker_connections - MySQL:优化缓冲池大小、查询缓存 - PHP-FPM:调整pm.max_children等进程管理参数 - 系统:内核参数优化、swap配置
通过以上监控方法,您可以全面掌握LNMP环境的运行状态,及时发现并解决性能瓶颈问题。