首页主机资讯如何在Ubuntu上优化Apache并发连接

如何在Ubuntu上优化Apache并发连接

时间2025-12-05 11:23:04发布访客分类主机资讯浏览1400
导读:Ubuntu上优化Apache并发连接的实用步骤 一 选择并切换合适的MPM 查看当前MPM:执行 apache2ctl -M | grep mpm,常见为 mpm_prefork、mpm_worker、mpm_event。 切换示例(以...

Ubuntu上优化Apache并发连接的实用步骤

一 选择并切换合适的MPM

  • 查看当前MPM:执行 apache2ctl -M | grep mpm,常见为 mpm_preforkmpm_workermpm_event
  • 切换示例(以event为例):
    • 禁用prefork并启用event:sudo a2dismod mpm_prefork & & sudo a2enmod mpm_event
    • 重启:sudo systemctl restart apache2
  • 选型建议:
    • prefork:每个进程处理一个请求,兼容性好(如非线程安全模块/PHP),但内存占用高。
    • worker/event:多进程+多线程,资源利用更高效,适合高并发;event在长连接/慢客户端场景更优。
  • 配置路径:MPM配置通常在 /etc/apache2/mods-enabled/mpm_*.conf,主配置在 /etc/apache2/apache2.conf

二 调整MPM关键参数

  • 通用思路:让 MaxRequestWorkers(或MaxClients) 与可用内存匹配,避免OOM;结合并发模型与业务特点设置超时与进程/线程规模。
  • 示例配置(放在对应IfModule块内,修改后重载):
MPM 关键参数与示例值 说明
prefork StartServers 5;MinSpareServers 5;MaxSpareServers 10;MaxRequestWorkers 150;MaxConnectionsPerChild 0 进程模型,值过大易占满内存;适合非线程安全环境。
event/worker StartServers 2–4;MinSpareThreads 25;MaxSpareThreads 75;ThreadsPerChild 25;MaxRequestWorkers 150–400;MaxConnectionsPerChild 1000–10000;ThreadLimit 64 线程模型,并发更高;event更擅长处理长连接与空闲保持。
  • 提示:部分发行版/版本中 MaxClients 已被 MaxRequestWorkers 取代,二者含义相近;调整 ServerLimit 仅在需要突破默认进程数限制时配合设置。

三 优化连接与超时参数

  • 启用并调优持久连接(KeepAlive):
    • KeepAlive On
    • MaxKeepAliveRequests 100(每连接可复用请求数)
    • KeepAliveTimeout 2–5(秒,繁忙站点取低值,减少占用)
  • 合理的总超时:
    • Timeout 30–60(秒,避免过长等待占用连接)
  • 适度降低日志开销:
    • LogLevel warn(减少磁盘I/O与CPU消耗)
  • 作用:减少TCP/SSL握手与连接建立次数,缩短等待,释放更多并发槽位。

四 启用压缩与缓存减轻后端压力

  • 启用压缩(mod_deflate):
    • 模块:sudo a2enmod deflate
    • 配置:
      <
          IfModule mod_deflate.c>
          
        AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css application/javascript
      <
          /IfModule>
          
      
  • 启用缓存(mod_cache + mod_cache_disk + mod_expires):
    • 模块:sudo a2enmod cache & & sudo a2enmod cache_disk & & sudo a2enmod expires
    • 配置:
      <
          IfModule mod_expires.c>
          
        ExpiresActive On
        ExpiresByType text/css  "access plus 1 month"
        ExpiresByType application/javascript "access plus 1 month"
        ExpiresByType image/jpg "access plus 1 month"
      <
          /IfModule>
          
      
      <
          IfModule mod_cache.c>
          
        <
          IfModule mod_cache_disk.c>
          
          CacheRoot "/var/cache/apache2/mod_cache_disk"
          CacheEnable disk /
          CacheDirLevels 2
          CacheDirLength 1
        <
          /IfModule>
          
      <
          /IfModule>
          
      
  • 效果:显著降低传输体积与后端渲染/数据库压力,提升首屏与整体吞吐。

五 监控验证与进一步扩展

  • 启用状态页(mod_status)并本地访问:
    • 模块:sudo a2enmod status
    • 配置:
      <
          Location "/server-status">
          
          SetHandler server-status
          Require local
      <
          /Location>
          
      
    • 访问:http://服务器IP/server-status 查看总访问、空闲/忙碌工作进程/线程、每秒请求等指标。
  • 系统监控与压测:
    • 资源:htopsar
    • 压测:ab(如:ab -n 10000 -c 200 http://域名/)
  • 扩展方案:当单机并发与资源达到瓶颈时,可在前端部署 HAProxy/Nginx 做负载均衡,横向扩展后端Apache节点。

附 快速估算与落地步骤

  • 估算可用并发(保守):
    • 若单进程/线程常驻内存约 50–80MB,可用内存 4GB,则大致可用并发数 ≈ 4000–8000MB ÷ 60–80MB ≈ 50–130。据此设置 MaxRequestWorkers 并留有余量。
  • 落地顺序:
    1. 选择并切换到 mpm_event;2) 按内存与压测调 MaxRequestWorkers/ThreadsPerChild
    2. KeepAlive/Timeout;4) 启用 deflate/cache/expires
    3. 打开 server-statushtop/sar 观察,必要时引入 HAProxy/Nginx

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: 如何在Ubuntu上优化Apache并发连接
本文地址: https://pptw.com/jishu/764544.html
如何在Ubuntu上调整Apache性能 如何在Ubuntu上调整Apache内存使用

游客 回复需填写必要信息