怎样监控Linux LAMP的性能指标
导读:监控 Linux LAMP 性能指标 一 监控目标与关键指标 系统资源 CPU:负载均值(1/5/15 分钟)、用户/系统/空闲、上下文切换、软硬中断 内存:总/已用/空闲、缓存/缓冲、Swap 使用与换入换出 磁盘:读写吞吐、IOPS...
监控 Linux LAMP 性能指标
一 监控目标与关键指标
- 系统资源
- CPU:负载均值(1/5/15 分钟)、用户/系统/空闲、上下文切换、软硬中断
- 内存:总/已用/空闲、缓存/缓冲、Swap 使用与换入换出
- 磁盘:读写吞吐、IOPS、平均等待/服务时间、利用率、Inode 使用
- 网络:带宽占用、TCP 连接状态分布(ESTABLISHED/TIME_WAIT/CLOSE_WAIT)、丢包/重传
- Apache
- 吞吐与并发:每秒请求数(RPS)、并发连接数、每秒错误数
- 请求耗时:平均/95/99 分位响应时间
- 工作进程:总/忙碌进程数、队列长度、子进程常驻内存
- 模块与状态:启用模块、Server/ExtendedStatus 输出
- MySQL
- 连接与会话:Threads_connected、Threads_running、Aborted_connects/clients
- 查询性能:Queries、Questions、Slow_queries、QPS/TPS
- 缓存与缓冲:Threads_cache_hit、Qcache_hits(若启用)、Innodb_buffer_pool_read_hits
- 锁与复制:Table_locks_waited、Innodb_row_lock_time_avg、Seconds_Behind_Master
- PHP
- 运行与错误:PHP-FPM 进程数、请求队列、慢请求、Fatal/Parse error
- 应用性能:页面/接口耗时、峰值内存、外部调用(DB/Redis/HTTP)耗时
- 日志
- Apache 访问/错误日志、MySQL 错误/慢查询日志、系统日志(journalctl)
二 快速上手 命令行与内置模块
- 系统资源
- 实时与概览:top/htop、vmstat 1、iostat -x 1、free -m、df -h、iotop、nmon
- 网络与端口:ss -tulpen、netstat -tulpn、iftop、tcpdump -i any -nn port 80
- Apache
- 服务状态:systemctl status httpd(或 apache2)
- 内置状态页:启用 mod_status,访问 http://服务器/ server-status 查看 Scoreboard、总请求、空闲/忙碌工作进程、每秒请求等
- 实时请求:apachetop -f /var/log/apache2/access.log
- MySQL
- 命令行:mysqladmin status、mysqladmin --relative --sleep 5 extended-status
- 会话与慢查询:SHOW STATUS LIKE ‘Threads_connected’; 、SHOW PROCESSLIST; 、SHOW VARIABLES LIKE ‘slow_query_log%’;
- PHP
- FPM 状态:配置 pm.status_path 后通过 Nginx/Apache 访问状态页(需访问控制)
- 错误与日志:tail -f /var/log/php*.log;开发/排障可启用 Xdebug(生产慎用)
- 日志与系统
- 实时查看:tail -f /var/log/apache2/{ access,error} .log、tail -f /var/log/mysql/error.log
- 系统日志:journalctl -u httpd -f、journalctl -u mysqld -f
三 可视化与长期监控方案
- Prometheus + Grafana
- 组件:node_exporter(主机指标)、mysqld_exporter(MySQL)、apache_exporter(Apache)、cAdvisor(容器)
- 步骤:部署 Exporter → 配置 Prometheus 抓取目标 → Grafana 添加数据源并导入 LAMP 仪表盘
- Zabbix
- 特性:主动/被动采集、灵活告警、模板化监控(Linux、Apache、MySQL)
- 步骤:安装 Server/Proxy/Agent → 导入模板 → 配置触发器与告警媒介
- 轻量/专用工具
- Glances(终端/Web)、Linux-Dash(轻量 Web 仪表盘)、Cacti(RRD 图形)、WatchYourPorts(端口监控 → InfluxDB2/Grafana)
- 日志分析
- ELK(Elasticsearch/Logstash/Kibana)集中化收集与可视化 Apache/MySQL/PHP 日志
四 关键命令与 SQL 示例
- 系统
- 负载与 I/O:uptime;vmstat 1 5;iostat -x 1 5;free -m;df -h;iotop
- 网络:ss -s;iftop;tcpdump -i any -nn -c 100 ‘tcp port 80’
- Apache
- 状态页:curl -s http://localhost/server-status?auto
- 实时请求:apachetop -f /var/log/apache2/access.log
- MySQL
- 状态与连接:mysqladmin --relative --sleep 5 extended-status | egrep “Queries|Threads_connected|Threads_running|Slow_queries”
- 命中率示例(需按版本/引擎调整):
- Qcache_hits 命中率(若启用查询缓存): SHOW GLOBAL STATUS LIKE ‘Qcache_hits’; SHOW GLOBAL STATUS LIKE ‘Qcache_inserts’; SET @hits := (SELECT VARIABLE_VALUE FROM performance_schema.global_status WHERE VARIABLE_NAME=‘Qcache_hits’); SET @ins := (SELECT VARIABLE_VALUE FROM performance_schema.global_status WHERE VARIABLE_NAME=‘Qcache_inserts’); SELECT @hits, @ins, CASE WHEN @ins+@hits=0 THEN 0 ELSE @hits/(@ins+@hits) END AS hit_ratio;
- InnoDB 缓冲池命中率: SHOW GLOBAL STATUS LIKE ‘Innodb_buffer_pool_read_requests’; SHOW GLOBAL STATUS LIKE ‘Innodb_buffer_pool_reads’; SET @req := (SELECT VARIABLE_VALUE FROM performance_schema.global_status WHERE VARIABLE_NAME=‘Innodb_buffer_pool_read_requests’); SET @phy := (SELECT VARIABLE_VALUE FROM performance_schema.global_status WHERE VARIABLE_NAME=‘Innodb_buffer_pool_reads’); SELECT @req, @phy, CASE WHEN @req=0 THEN 0 ELSE 1-@phy/@req END AS bp_hit_ratio;
- 慢查询:启用 slow_query_log,定期用 pt-query-digest 分析慢日志
五 告警阈值与排障流程
- 建议阈值(需结合基线调整)
- CPU:1 分钟负载 > 核心数×3 持续 5 分钟
- 内存:可用内存 < 10% 或 Swap 使用持续增长
- 磁盘:使用率 > 80% 或 await > 20 ms
- Apache:忙碌工作进程 ≈ MaxRequestWorkers、RPS 突降、5xx 错误率上升
- MySQL:Threads_running 持续接近 max_connections、慢查询突增、复制延迟持续增长
- 排障流程
- 现象 → 指标定位 → 缩小范围 → 日志取证 → 复现与修复 → 回归验证
- 示例:首页变慢
- 看系统:top/htop(CPU/内存)、iostat(I/O)、ss -s(连接堆积)
- 看 Apache:server-status(忙碌进程/队列)、access.log(慢 URL/返回码)
- 看 MySQL:SHOW PROCESSLIST(长事务/锁)、慢查询日志(pt-query-digest)
- 看 PHP-FPM:status(进程/队列)、慢日志(Xdebug/日志)
- 处置:限流/扩容、SQL 优化/索引、缓存命中率提升、静态资源 CDN 化、调整 Apache MPM/KeepAlive、优化 InnoDB 缓冲池与日志配置
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: 怎样监控Linux LAMP的性能指标
本文地址: https://pptw.com/jishu/752511.html
