Linux下LAMP性能优化指南
LAMP(Linux、Apache、MySQL、PHP)架构的性能优化需从操作系统、Web服务器、数据库、PHP、缓存、硬件及监控等多维度协同调整,以下是具体策略:
sudo yum update -y),获取性能改进与安全补丁。/etc/sysctl.conf优化网络与内存配置,关键参数包括:
net.ipv4.tcp_tw_reuse = 1、net.ipv4.tcp_tw_recycle = 1(减少TIME_WAIT连接);net.core.somaxconn = 1024(提升并发连接处理能力);vm.swappiness = 10(降低交换空间使用频率,优先使用物理内存)。noatime选项(减少文件访问时间更新,降低磁盘I/O)。Prefork(多进程,适合兼容性要求高的场景);Event(多线程+事件驱动,适合高并发场景,推荐)。httpd.conf中的核心参数,匹配服务器资源:
MaxRequestWorkers(最大并发请求数,建议设为内存的1/4,如8GB内存设为2048);KeepAliveTimeout(空闲连接超时,设为2-5秒,减少长连接占用);StartServers、MinSpareServers、MaxSpareServers(动态调整进程池,避免频繁创建/销毁进程)。mod_cache(缓存静态/动态内容,降低服务器负载)、mod_deflate(Gzip压缩传输数据,减少带宽占用,压缩率可达60%-70%)。EXPLAIN分析查询执行计划,确认索引使用情况。my.cnf中的缓冲区参数,关键参数:
innodb_buffer_pool_size(InnoDB缓冲池大小,建议设为物理内存的50%-70%,用于缓存表数据与索引);key_buffer_size(MyISAM索引缓冲区大小,若使用InnoDB可设为较小值,如16M)。SELECT *(只查询所需字段)、减少子查询(改用JOIN)、优化JOIN顺序(小表驱动大表);禁用MySQL 8.0前的查询缓存(query_cache_type = 0,因缓存维护开销大)。OPcache(PHP 5.5+内置),缓存编译后的PHP脚本,减少重复编译开销;调整opcache.ini参数:opcache.enable=1、opcache.memory_consumption=128(缓存大小,单位MB)、opcache.revalidate_freq=60(缓存验证频率,单位秒)。php.ini:memory_limit(脚本内存限制,根据应用需求设为128M-256M)、max_execution_time(脚本执行超时时间,设为30-60秒)、禁用不必要的扩展(如xdebug,仅在调试时使用)。Memcached(内存键值存储)或Redis(支持数据结构丰富,如哈希、列表)缓存热点数据(如用户会话、商品信息),减少对数据库的访问;例如,将用户登录状态存储在Redis中,有效期设为30分钟。Varnish(高性能HTTP反向代理)缓存静态资源(如图片、CSS、JS),或配置Apache的mod_expires模块,设置静态资源的过期时间(如ExpiresActive On、ExpiresByType image/jpeg "access plus 1 month"),降低服务器负载。HAProxy(支持TCP/HTTP负载均衡)或LVS(Linux虚拟服务器,四层负载均衡)分发请求到多台LAMP服务器,提升系统吞吐量;例如,配置HAProxy的roundrobin算法,将请求均匀分配到3台后端服务器。top(查看CPU/内存使用率)、vmstat(查看系统整体性能,如进程、内存、I/O)、iostat(查看磁盘I/O情况,如读写速率、等待时间)、netstat(查看网络连接状态,如并发连接数)等工具实时监控系统状态;或使用Prometheus+Grafana搭建可视化监控平台,设置警报阈值(如CPU使用率超过80%时报警)。LogLevel warn,减少不必要的日志输出)、定期清理旧日志(如用logrotate工具,每周压缩并删除7天前的日志),避免日志文件过大占用磁盘空间。OPTIMIZE TABLE命令整理MySQL表碎片(针对频繁更新的表,如订单表),提升查询性能;备份重要数据(如使用rsync+ssh远程备份到另一台服务器),防止数据丢失。