如何在CentOS上优化LAMP性能
LAMP(Linux、Apache、MySQL、PHP)是常见的Web服务栈,优化其性能需从硬件基础、系统内核、组件配置、缓存机制、网络传输、监控维护六大维度系统调整,以下是具体方案:
硬件是性能的底层支撑,需根据业务负载升级资源:
调整内核参数可提升系统资源利用率:
/etc/sysctl.conf,添加/修改以下关键参数:# TCP连接复用,减少TIME_WAIT状态连接
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_fin_timeout = 30
# 增加可用端口范围,避免端口耗尽
net.ipv4.ip_local_port_range = "1024 65535"
# 提升连接队列长度,应对高并发
net.core.somaxconn = 1024
net.core.netdev_max_backlog = 2000
# 控制内存交换,减少磁盘I/O
vm.swappiness = 10
# 优化脏页写入,平衡性能与数据安全
vm.dirty_background_ratio = 5
vm.dirty_ratio = 10
sudo sysctl -p;systemctl stop firewalld && systemctl disable firewalld(若无需防火墙,生产环境建议用iptables替代)。Apache作为Web服务器,需调整工作模式与连接参数:
Event模式(支持高并发,处理长连接更高效),编辑/etc/httpd/conf/httpd.conf:LoadModule mpm_event_module modules/mod_mpm_event.so
<IfModule mpm_event_module>
StartServers 2
MinSpareThreads 25
MaxSpareThreads 75
ThreadLimit 64
ThreadsPerChild 25
MaxRequestWorkers 400
MaxConnectionsPerChild 10000
</IfModule>
KeepAlive On
KeepAliveTimeout 5
MaxKeepAliveRequests 100
mod_cache缓存静态内容(如图片、CSS),编辑httpd.conf:LoadModule cache_module modules/mod_cache.so
LoadModule cache_disk_module modules/mod_cache_disk.so
<IfModule mod_cache.c>
CacheQuickHandler off
CacheLock on
CacheLockPath /tmp/mod_cache-lock
CacheLockMaxAge 5
CacheIgnoreHeaders Set-Cookie
<IfModule mod_cache_disk.c>
CacheRoot /var/cache/apache2/mod_cache_disk
CacheEnable disk /
CacheDirLevels 2
CacheDirLength 1
</IfModule>
</IfModule>
a2dismod命令关闭未使用的模块(如status、autoindex),减少资源占用。数据库是性能瓶颈的关键环节,需优化内存分配与查询效率:
/etc/my.cnf):# InnoDB缓冲池大小(核心参数,建议为物理内存的50%-80%)
innodb_buffer_pool_size = 4G
# 查询缓存(仅适用于读多写少场景,MySQL 8.0+已移除)
query_cache_type = 1
query_cache_size = 64M
# 连接数限制(根据并发请求调整)
max_connections = 200
# 线程缓存,减少线程创建开销
thread_cache_size = 16
EXPLAIN分析查询语句,避免全表扫描;OPTIMIZE TABLE整理碎片,每月分析表(ANALYZE TABLE)更新统计信息,优化查询计划。PHP作为动态脚本,需通过缓存与模块优化提升执行效率:
OPcache缓存编译后的PHP脚本,编辑/etc/php.ini:zend_extension=opcache.so
opcache.enable=1
opcache.memory_consumption=128
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=4000
opcache.revalidate_freq=60
opcache.fast_shutdown=1
php.ini的disable_functions和disable_classes关闭未使用的函数(如exec、system)和类,减少安全风险与资源占用;缓存是提升响应速度的关键手段,可分为应用层缓存与页面缓存:
Memcached或Redis缓存数据库查询结果(如商品信息、用户会话),例如Redis配置:# 安装Redis
sudo yum install epel-release -y
sudo yum install redis -y
sudo systemctl enable redis && sudo systemctl start redis
PHP代码中通过phpredis扩展连接Redis,缓存查询结果;Varnish缓存动态页面(如首页、文章页),配置Varnish监听80端口,将缓存内容直接返回给客户端,减少Apache负载。网络传输效率直接影响用户体验:
/etc/sysctl.conf):# 增大TCP接收/发送缓冲区,提升大数据量传输效率
net.ipv4.tcp_rmem = 4096 87380 6291456
net.ipv4.tcp_wmem = 4096 16384 4194304
tcp_syncookies:防止SYN Flood攻击,避免半连接队列溢出:net.ipv4.tcp_syncookies = 1
持续监控是优化的前提,需定期检查系统状态:
top(查看CPU/内存占用)、vmstat(查看系统整体性能)、iostat(查看磁盘I/O)、netstat(查看网络连接)实时监控;access.log(查看热门页面与请求频率)、MySQL的slow_query.log(定位慢查询)、PHP的error.log(排查脚本错误);/etc/httpd/conf/httpd.conf、/etc/my.cnf、/etc/php.ini),在测试环境验证配置效果,避免生产环境故障。通过以上多维度的优化,可显著提升CentOS上LAMP环境的性能。需注意,优化需结合业务场景(如高并发、大数据量)逐步调整,避免过度优化导致的不稳定。