温馨提示×

ubuntu lamp如何提高速度

小樊
32
2025-12-14 06:46:33
栏目: 智能运维

Ubuntu LAMP 性能优化路线图

一 基线评估与瓶颈定位

  • 明确目标:以真实业务场景做压测(如 ab/wrk/siege),记录 TTFB、RPS、P95/P99 延迟、错误率,每次只改一处并对比前后指标。
  • 资源与连接:用 top/htop、iostat、vmstat、netstat -s、ss -s 观察 CPU、内存、I/O、连接数、重传 等,定位是 CPU 计算、I/O 等待、数据库、还是网络 成为瓶颈。
  • 数据库:开启慢查询日志,抓取 慢 SQL,用 EXPLAIN 检查是否走索引、扫描行数是否过大。
  • 应用与 PHP:用 XHProf/BlackfirePHP-FPM slowlog 找出耗时函数、N+1 查询、外部接口阻塞等。
  • 结论先行:先找到“最痛”的那个瓶颈,再针对性优化,避免一次性大改导致难以归因。

二 Apache 与 PHP 层优化

  • 启用压缩与长连接:开启 mod_deflate(Gzip)减小传输体积;开启 KeepAlive 减少握手开销,建议示例:
    • KeepAlive On
    • MaxKeepAliveRequests 100
    • KeepAliveTimeout 5
  • 工作模式与并发:根据并发与内存选择 prefork/worker/event;合理设置 MaxRequestWorkers/MaxConnectionsPerChild,避免过小(排队)或过大(内存吃紧)。
  • 页面与静态资源缓存:启用 mod_expires 设置 Cache-Control/Expires,对图片、CSS、JS 等设置较长缓存时间,减少重复请求。
  • PHP 执行加速:启用 OPcache(字节码缓存),示例关键参数:
    • opcache.enable=1
    • opcache.memory_consumption=128
    • opcache.interned_strings_buffer=8
    • opcache.max_accelerated_files=4000
  • 进程模型:高并发动态站点建议采用 PHP-FPM + mod_proxy_fcgi(或反向代理)替代 mod_php,获得更稳定的并发与资源隔离。

三 MySQL MariaDB 优化

  • 内存关键参数:结合内存容量设置 innodb_buffer_pool_size(如 1G 起步,视总内存上调)、key_buffer_size(MyISAM 场景),减少磁盘 I/O。
  • 索引与查询:为高频 WHERE/JOIN/ORDER BY 列建立合适索引,避免全表扫描;精简 SQL、合并多次查询、合理使用分页与缓存。
  • 维护与结构:定期 ANALYZE/OPTIMIZE TABLE、重建碎片化索引;审视表结构与数据类型,避免过度范式化导致的多表 JOIN。
  • 架构演进:读多写少场景引入 主从复制读写分离;超大规模再考虑 分库分表

四 缓存与内容分发

  • 数据缓存:引入 Redis/Memcached 缓存热点数据、会话与计算结果,显著降低数据库压力与响应时间。
  • 反向代理与全页缓存:使用 Varnish 作为反向代理/HTTP 加速器,缓存可缓存内容(含部分动态页面),大幅减轻后端负载。
  • 边缘加速:将 静态资源(图片、CSS、JS、视频) 接入 CDN,缩短用户与资源的物理距离并减少源站带宽。

五 系统与网络优化

  • 硬件与存储:优先使用 SSD,并视负载 增加内存,可显著改善 I/O 与稳定性。
  • 文件描述符与内核网络:提升进程可打开文件数(如 ulimit -n 65535),优化 TCP 参数(如 net.ipv4.tcp_tw_reuse=1、net.ipv4.tcp_fin_timeout=30),提升高并发连接处理能力。
  • 监控与迭代:持续用 top/htop、iostat、vmstat 等观察瓶颈变化,配合 日志分析 验证优化成效,形成“压测—优化—复测”的闭环。

0