如何提升Debian LAMP响应速度
小樊
38
2025-12-14 18:58:32
Debian LAMP 响应速度优化实操指南
一 系统层优化
- 保持系统与软件为最新稳定版,减少漏洞与性能回退;卸载无用软件包并清理 APT 缓存,释放磁盘与内存占用。
- 调整内核网络与内存参数(示例,按服务器内存与并发调优):
- 连接复用与端口范围:net.ipv4.tcp_tw_reuse=1,net.core.somaxconn=65535,net.ipv4.ip_local_port_range=1024 65535
- 接收/发送缓冲区:net.core.rmem_max=16777216,net.core.wmem_max=16777216;tcp_rmem/tcp_wmem 设置为“4096 87380 16777216”
- 减少换页:vm.swappiness=10
执行 sysctl -p 使配置生效。
- 启用更优的 TCP 拥塞控制算法(需内核支持):sysctl -w net.ipv4.tcp_congestion_control=bbr。
- 关闭非必要服务(如 bind9、nscd 等),降低资源争用。
二 Apache 与网络层优化
- 选择高效 MPM:高并发优先使用 event(或 worker),替代默认的 prefork;命令示例:a2dismod prefork && a2enmod event && systemctl restart apache2。
- 长连接与超时:KeepAlive On,KeepAliveTimeout 5;结合业务适当缩短 Timeout,避免空闲占用。
- 压缩传输:启用 mod_deflate 对 text/html、text/css、application/javascript 等开启压缩。
- 静态资源缓存:启用 mod_cache / mod_cache_disk / mod_expires / headers,对图片、CSS、JS 设置长期 Cache-Control。
- 并发与内核协同:MaxRequestWorkers(或 MaxClients)需与内存、MPM 类型匹配;如 somaxconn 已设为 65535,可相应提高 Apache 的并发上限。
- 传输加速:启用 EnableSendfile On(需底层文件系统支持)以减少用户态/内核态拷贝。
三 MariaDB MySQL 优化
- 缓冲池大小:将 innodb_buffer_pool_size 设为物理内存的50%–80%(如 1G/2G/4G),显著减少磁盘 I/O。
- 连接与缓存策略:max_connections 依据应用与内存设定(如 200 起步);MySQL 8.0+ 查询缓存已弃用,建议设为 0 或移除,改由 Redis/Memcached 等应用层缓存承担热点数据。
- 索引与慢查询:为高频查询字段建立合适索引,使用 EXPLAIN 分析执行计划;开启并定期分析慢查询日志。
- 定期维护:执行 mysqlcheck --all-databases --optimize 进行表优化与修复。
四 PHP 与 PHP-FPM 优化
- 使用最新稳定版 PHP 8.x(如 8.2/8.3),并安装常用扩展(php-mysql、php-opcache 等)。
- 启用 OPcache(建议值):opcache.enable=1,opcache.memory_consumption=128,opcache.max_accelerated_files=4000;重启 PHP-FPM 或 Apache 生效。
- PHP-FPM 进程管理(/etc/php/{version}/fpm/pool.d/www.conf):
- 动态模式 pm=dynamic;pm.max_children 依据内存与单进程占用估算(如每进程约 20MB,8GB 内存可先从 50 左右尝试);
- 典型参数:pm.start_servers=10,pm.min_spare_servers=5,pm.max_spare_servers=20。
- PHP 运行时参数:memory_limit=256M,max_execution_time=30(按应用调整)。
五 缓存与前端加速及监控
- 应用层缓存:部署 Redis/Memcached 缓存热点数据(如会话、配置、聚合结果),降低数据库压力。
- 反向代理缓存:使用 Varnish 作为 HTTP 反向代理缓存层,缓存整页或片段,进一步减少后端计算。
- 内容分发网络 CDN:将图片、CSS、JS 等静态资源分发至全球节点,缩短首包与资源加载时间。
- 静态资源优化:图片压缩,采用 WebP/AVIF;合并与压缩 HTML/CSS/JS,减少请求数与体积。
- 监控与日志:使用 htop/glances 实时监控;定期分析 Apache 访问/错误日志与 MySQL 慢查询日志,定位瓶颈并持续迭代。