Linux LAMP性能调优指南
LAMP(Linux、Apache、MySQL、PHP)作为经典的开源Web栈,其性能调优需从操作系统、Web服务器、数据库、PHP、缓存、硬件及监控等多维度协同优化,以下是具体措施:
操作系统是基础,需通过内核参数调整与文件系统优化提升底层性能:
/etc/sysctl.conf
文件,优化网络与文件描述符设置。例如:
net.core.rmem_default=262144
、net.core.wmem_default=262144
);net.ipv4.tcp_fastopen=3
);net.core.somaxconn=4096
);fs.file-max=65535
)。修改后执行sysctl -p
生效。noatime
选项(减少文件访问时间更新),并使用SSD硬盘提升I/O性能。yum update
),修补性能漏洞;禁用不必要的守护进程(如蓝牙、打印服务),释放内存与CPU资源。Apache是LAMP的核心组件,需通过工作模式调整、参数优化及缓存启用提升并发处理能力:
Prefork
(多进程模型,适合兼容性要求高的场景):调整StartServers
(初始进程数)、MinSpareServers
(最小空闲进程数)、MaxSpareServers
(最大空闲进程数)、MaxRequestWorkers
(最大并发请求数);Event
(事件驱动模型,适合高并发场景):优化MaxRequestWorkers
、MaxConnectionsPerChild
(每个子进程处理的最大请求数,避免内存泄漏)。httpd.conf
中设置KeepAlive On
,并调整KeepAliveTimeout
(保持连接超时时间,建议15秒内)与MaxKeepAliveRequests
(单次连接最大请求数,建议100以上),减少TCP连接建立的开销。mod_autoindex
、mod_status
),通过a2dismod
命令移除,减少内存占用。mod_deflate
模块压缩传输数据(如AddOutputFilterByType DEFLATE text/html text/css application/javascript
);使用mod_cache
与mod_expires
缓存静态内容(如图片、CSS),减少动态内容生成次数。MySQL是数据层的核心,需通过索引优化、内存配置及查询优化提升数据处理效率:
EXPLAIN
命令分析查询执行计划,确认索引使用情况。my.cnf
文件,调整关键内存参数:
innodb_buffer_pool_size
(InnoDB缓冲池大小,建议设置为物理内存的50%-70%,用于缓存数据与索引);key_buffer_size
(MyISAM索引缓冲区大小,适合MyISAM表);query_cache_size
(查询缓存大小,MySQL 8.0已移除,建议使用应用层缓存替代)。SELECT *
、减少子查询、使用JOIN替代多次查询);定期分析慢查询日志(slow_query_log=1
、long_query_time=2
),定位并优化慢查询。OPTIMIZE TABLE
命令整理表碎片(针对频繁更新的表);定期归档历史数据,减少表数据量。PHP是应用层的关键,需通过字节码缓存、代码优化及配置调整提升执行效率:
php.ini
中开启OPcache(opcache.enable=1
),缓存编译后的PHP字节码,减少脚本解析与编译时间;调整opcache.memory_consumption
(缓存大小,建议128MB以上)、opcache.max_accelerated_files
(缓存的文件数量,建议10000以上)。php.ini
中的memory_limit
(脚本内存限制,根据应用需求调整,如128M或256M)、max_execution_time
(脚本最大执行时间,避免长时间占用资源)。缓存是提升性能的关键手段,通过应用层缓存减少对数据库与文件系统的访问:
memcached
扩展或Redis
扩展连接缓存服务器,将查询结果缓存一定时间(如5分钟)。硬件与网络是性能的基础保障,需根据负载需求升级配置:
net.ipv4.tcp_tw_reuse=1
,开启TCP连接复用)。持续的监控与维护是保持性能稳定的关键:
top
(查看CPU与内存使用)、vmstat
(查看系统整体性能)、iostat
(查看磁盘I/O)、netstat
(查看网络连接)等工具实时监控系统状态;部署Prometheus+Grafana搭建可视化监控平台,设置警报阈值(如CPU使用率超过80%时报警)。access.log
、error.log
)、MySQL(slow_query.log
)、PHP(error_log
)日志,识别性能瓶颈(如频繁的404请求、慢查询);使用ELK Stack(Elasticsearch+Logstash+Kibana)集中管理日志,便于检索与分析。OPTIMIZE TABLE
);备份重要数据(如使用rsync或远程备份服务),确保数据安全。对于高流量场景,需通过负载均衡分散请求,提升系统可靠性:
upstream
模块定义后端服务器列表,设置load balancing
策略。master-slave replication
),提升数据库读取性能;使用Keepalived或Heartbeat实现故障转移(如主服务器宕机时,自动切换到备用服务器),确保服务连续性。