温馨提示×

Ubuntu LAMP如何提高并发

小樊
49
2026-01-08 16:13:05
栏目: 智能运维

Ubuntu LAMP 提升并发的实用路线图

从系统、Apache、PHP、MySQL 到缓存与扩展,按下面顺序优化,能在不更换技术栈的前提下显著提升并发能力。

一 系统层优化

  • 提升文件描述符与内核网络参数:提高 fs.file-maxnet.core.somaxconnnet.ipv4.tcp_max_syn_backlog,开启 net.ipv4.tcp_tw_reuse、合理设置 net.ipv4.tcp_fin_timeout,适度降低 vm.swappiness,可显著缓解连接瓶颈与内存回收压力。示例(写入 /etc/sysctl.conf 后执行 sysctl -p):
    • fs.file-max = 2097152
    • net.core.somaxconn = 65535
    • net.ipv4.tcp_max_syn_backlog = 65535
    • net.ipv4.tcp_tw_reuse = 1
    • net.ipv4.tcp_fin_timeout = 30
    • vm.swappiness = 10
  • 资源与后台进程治理:关闭不必要的服务与守护进程,减少内存与 CPU 争用;为关键服务设置合适的 systemd 资源限制与 OOM 策略。
  • 存储与网络:优先使用 SSD,并优化挂载选项;对外服务建议接入 CDN 承载静态资源,降低源站压力与网络时延。

二 Apache 层优化

  • 选择高效 MPM:Ubuntu 默认 Prefork 稳健但并发能力有限;在 PHP 为线程安全或采用 PHP-FPM 时,优先使用 Event MPM(高并发、低开销);若需线程化且走 mod_php,可选 Worker MPM。切换前用 apache2ctl -V 查看当前 MPM。
  • 关键并发参数:结合内存与业务类型调整 MaxRequestWorkers(并发工作单元上限)、MaxConnectionsPerChild(回收长生命周期进程/线程,防内存泄漏)、KeepAlive(建议开启并合理设置 KeepAliveTimeout)、以及 Timeout。启用 HTTP/2 提升多路复用能力,启用 mod_deflate 压缩与 mod_expires/mod_headers 做浏览器缓存与头部治理。
  • 典型场景建议:
    • 动态为主、需线程化且走 mod_php:选 Worker MPM,并控制 MaxRequestWorkers,避免内存膨胀。
    • 高并发通用场景:选 Event MPM + PHP-FPM,获得更好的连接与内存效率。

三 PHP 层优化

  • 必装 OpCode 缓存:启用 OPcache(PHP 5.5+ 内置),减少脚本编译开销;如使用旧版 PHP,可考虑 APCu/XCache 等加速器,通常可带来数倍性能提升。
  • 运行模式与进程管理:
    • mod_php 时,MPM 通常选 Worker/Event,注意线程安全与扩展兼容性。
    • PHP-FPM(推荐):使用 ondemand/static 进程模型,结合 pm.max_children、pm.start_servers、pm.min_spare_servers、pm.max_spare_servers 与 request_terminate_timeout 精细控内存与响应。
  • 配置与代码:合理设置 memory_limit,禁用不必要的扩展与模块;优化 SQL 与外部调用次数,减少阻塞与 I/O。

四 MySQL 层优化

  • 内存与缓存:根据内存大小调优 innodb_buffer_pool_size(通常占可用内存的 50%–70%)、合理设置 key_buffer_size、连接与会话缓存等,减少磁盘 I/O。
  • 索引与查询:为高频查询建立合适索引,避免全表扫描;精简与改写慢 SQL,合并批量操作,减少往返次数。
  • 架构扩展:读多写少场景引入 主从复制 与读写分离;缓存层使用 Redis/Memcached 承载热点数据与计算结果,降低数据库压力。

五 缓存与扩展架构

  • 页面与反向代理缓存:在源站前部署 VarnishNginx 反向代理,缓存静态资源与可缓存的动态片段,显著降低 Apache/PHP 压力。
  • 数据缓存:使用 Redis/Memcached 做对象/会话/页面片段缓存,缩短请求路径与数据库负载。
  • 内容分发:将图片、CSS、JS 等静态资源托管至 CDN,减少跨域与长距离传输时延,提升首屏与整体吞吐。
  • 水平扩展:当单机已达瓶颈,引入 HAProxy/LVS 等负载均衡,将流量分发至多台 LAMP 实例,实现容量线性扩展。

0