LAMP架构的性能问题常源于系统资源瓶颈,需先通过基础命令监控CPU、内存、磁盘、网络等核心指标:
top按M排序内存,P排序CPU;htop需安装,界面更友好)。vmstat 1每秒刷新,重点关注si/so(交换分区读写)、us/sy(用户/系统CPU占用))。iostat -x 1查看await(平均等待时间)、%util(磁盘利用率),await>20ms需警惕)。netstat -tuln查看监听端口,ss -s统计TCP连接数,netstat -antp | grep ESTABLISHED查看活跃连接)。free -h以人类可读格式显示内存使用,df -h查看磁盘剩余空间,避免/分区满导致服务崩溃)。Apache作为Web服务器,其性能直接影响网站响应速度,需监控连接数、请求处理、配置参数:
httpd.conf或apache2.conf,添加<IfModule mod_status.c> ExtendedStatus On Location /server-status SetHandler server-status Require local</IfModule>,重启Apache后访问http://server-ip/server-status,可查看Total Accesses(总请求数)、BusyWorkers(忙碌工作进程数)、CPU Usage(CPU占用)等)。access.log(/var/log/apache2/access.log)分析请求量、响应时间(用awk '{print $9}' access.log | sort -nr | head -10查看Top10状态码;grep "200" access.log | wc -l统计成功请求数);error.log(/var/log/apache2/error.log)定位配置错误、权限问题(如[error] [client x.x.x.x] File does not exist: /var/www/html/test)。MySQL作为数据库,其查询效率和资源占用是关键,需监控连接、查询、锁、缓存:
SHOW STATUS:查看运行状态(如Threads_connected(当前连接数,需对比max_connections)、Queries_per_second(QPS,每秒查询数)、Slow_queries(慢查询数))。SHOW PROCESSLIST:查看当前执行的查询(SELECT * FROM information_schema.PROCESSLIST WHERE TIME > 5查看执行超过5秒的查询,定位长时间运行的SQL)。SHOW VARIABLES:查看配置参数(如innodb_buffer_pool_size(InnoDB缓冲池大小,建议设为物理内存的50%-70%)、max_connections(最大连接数,避免过多连接导致资源耗尽))。my.cnf,添加slow_query_log=ON、slow_query_log_file=/var/log/mysql/mysql-slow.log、long_query_time=2(超过2秒的查询),重启MySQL后分析日志(用mysqldumpslow -t 10 /var/log/mysql/mysql-slow.log查看Top10慢查询)。my.cnf,设置performance_schema=ON,重启后查询performance_schema.events_waits_summary_global_by_event_name(等待事件汇总)、performance_schema.table_io_waits_summary_by_table(表IO统计),分析锁等待、IO瓶颈)。PHP作为应用层,其脚本执行效率和内存占用需重点关注,可通过内置工具、APM、实时监控实现:
microtime(true)记录开始和结束时间($start = microtime(true); // 业务逻辑; $end = microtime(true); echo "耗时: " . ($end - $start) * 1000 . "ms")。query()方法前记录时间($startQuery = microtime(true); $result = $pdo->query("SELECT * FROM users"); $queryTime = ($endQuery - $startQuery) * 1000; echo "查询耗时: {$queryTime}ms")。newrelic扩展,配置newrelic.appname="Your App",查看Dashboard中的Transactions(事务)、Errors(错误))。blackfire run php script.php生成报告,分析函数耗时)。prometheus_client_php库暴露指标(如request_duration_seconds(请求耗时)、memory_usage_bytes(内存使用)),在Grafana中创建Dashboard可视化。PerformanceMonitor::checkpoint('start'); // 业务代码; PerformanceMonitor::checkpoint('end');),计算间隔时间并告警(if (PerformanceMonitor::duration('start', 'end') > 200) error_log("耗时超过200ms"))。zabbix_agentd.conf中的Server参数,通过Web界面添加主机,设置监控项(如CPU利用率、内存使用、Apache连接数),配置触发器(如{host:system.cpu.util[,iowait].last()}>20触发告警)。{host:mysql.slow_queries.last()}>10时发送邮件/短信);cron定时执行脚本检查状态(如*/5 * * * * /path/to/check_apache.sh >> /var/log/apache_monitor.log,脚本内容可检查Apache是否运行、连接数是否超标)。