首页主机资讯如何在CentOS上优化Apache2性能

如何在CentOS上优化Apache2性能

时间2025-11-24 17:19:03发布访客分类主机资讯浏览411
导读:CentOS 上优化 Apache2 性能 一 基线评估与准备 明确业务类型与瓶颈:是静态资源为主还是动态/反向代理为主,瓶颈在CPU、内存、I/O 还是网络。 建立监控基线:关注并发连接数、每秒请求数、响应时间、CPU/内存、磁盘 I/...

CentOS 上优化 Apache2 性能

一 基线评估与准备

  • 明确业务类型与瓶颈:是静态资源为主还是动态/反向代理为主,瓶颈在CPU、内存、I/O 还是网络
  • 建立监控基线:关注并发连接数、每秒请求数、响应时间、CPU/内存、磁盘 I/O、TIME_WAIT 数量,便于调参前后对比。
  • 备份与灰度:先备份配置,使用单台灰度/维护窗口验证,再全量发布。
  • 模块与端口梳理:仅启用必要模块,关闭无用模块与端口,减少攻击面与资源占用。

二 系统层面优化

  • 文件描述符与进程数
    • 提升系统级与用户级文件描述符上限,编辑**/etc/security/limits.conf**:
      * soft nofile 65535
      * hard nofile 65535
      * soft nproc  65535
      * hard nproc  65535
      
    • 提升内核总句柄数(/etc/sysctl.conf):fs.file-max = 6815744
    • 提升网络监听队列(/etc/sysctl.conf):net.core.somaxconn = 65535
  • TCP 网络栈
    • 减少连接回收时间、开启复用与防护(/etc/sysctl.conf):
      net.ipv4.tcp_fin_timeout = 30
      net.ipv4.tcp_tw_reuse = 1
      net.ipv4.tcp_tw_recycle = 1
      net.ipv4.tcp_keepalive_time = 1200
      net.ipv4.ip_local_port_range = 10000 65000
      net.ipv4.tcp_max_syn_backlog = 8192
      net.ipv4.tcp_max_tw_buckets = 5000
      net.ipv4.tcp_syncookies = 1
      
    • 应用生效:sudo sysctl -p /etc/sysctl.conf
  • 虚拟内存与 I/O
    • 适度降低换页倾向、优化脏页刷写(/etc/sysctl.conf):
      vm.swappiness = 10
      vm.overcommit_memory = 1
      vm.dirty_ratio = 40
      vm.dirty_background_ratio = 10
      
  • 文件系统
    • 使用ext4/XFS,挂载时加上noatime以减少元数据写入;日志与数据分离到不同磁盘更佳。

三 Apache MPM 与核心参数

  • 选择并调整合适的 MPM(多处理模块)
    • 并发与资源占用为核心选择:静态资源为主可选event,混合负载可选worker/event,传统或兼容性要求高用prefork
    • 在**/etc/httpd/conf.modules.d/00-mpm.conf**启用相应模块,并按硬件与负载调参。
  • 推荐的 MPM 参数示例(需结合实际压测微调)
    • prefork(示例)
      <
          IfModule mpm_prefork_module>
          
          StartServers        5
          MinSpareServers     5
          MaxSpareServers    10
          MaxRequestWorkers  150
          MaxConnectionsPerChild 0
      <
          /IfModule>
          
      
    • worker/event(示例)
      <
          IfModule mpm_worker_module>
          
          StartServers         2
          MinSpareThreads     25
          MaxSpareThreads     75
          ThreadLimit         64
          ThreadsPerChild     25
          MaxRequestWorkers  400
          MaxConnectionsPerChild 1000
      <
          /IfModule>
          
      
  • 连接与会话
    • 启用持久连接并控制握手开销:
      KeepAlive On
      MaxKeepAliveRequests 100
      KeepAliveTimeout 5
      
  • 压缩与缓存
    • 启用 Gzip 压缩(减少传输体积):
      <
          IfModule mod_deflate.c>
          
        AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css application/javascript
      <
          /IfModule>
          
      
    • 设置静态资源过期(减少重复请求):
      <
          IfModule mod_expires.c>
          
        ExpiresActive On
        ExpiresByType text/css "access plus 30 days"
        ExpiresByType image/jpeg "access plus 1 year"
        ExpiresByType image/png "access plus 1 year"
        ExpiresByType image/gif "access plus 1 year"
        ExpiresByType application/javascript "access plus 30 days"
      <
          /IfModule>
          
      
  • 协议与加速
    • 启用HTTP/2(需 TLS):sudo a2enmod http2 并在虚拟主机启用 Protocols h2 http/1.1
    • 启用SSL/TLSsudo a2enmod ssl 并配置有效证书。

四 模块与内容分发优化

  • 模块管理
    • 禁用不需要的模块(如 autoindex、status 等),仅启用必要模块(如deflate、expires、cache/disk_cache、http2、ssl、proxy等),降低内存与 CPU 开销。
  • 反向代理与缓存
    • 对动态内容使用mod_proxy + mod_cache/mod_disk_cache做反向代理与本地缓存,减轻后端压力。
  • 日志优化
    • 合理设置日志级别与轮转策略,避免频繁 I/O 影响性能;必要时减少不必要的日志字段。
  • 内容分发网络(CDN)
    • 静态资源交由CDN分发,降低源站压力与用户访问时延。

五 验证与持续监控

  • 配置生效与语法检查
    • 语法检查:sudo httpd -t
    • 重启服务:sudo systemctl restart httpd
  • 压测与对比
    • 使用ab、wrk、jmeter等进行压测,对比并发能力、P95/P99 延迟、错误率与资源占用,逐步微调参数。
  • 运行期监控
    • 进程与连接:ps aux | grep httpdnetstat -an | grep :80 | wc -l
    • 系统资源:top/vmstat/iostat/sar,关注CPU、内存、I/O、网络TIME_WAIT变化。
  • 风险提示
    • 修改内核参数、MPM 与并发上限可能引发不稳定;务必在测试环境验证并保留回滚方案,生产变更选择低峰时段进行。

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


若转载请注明出处: 如何在CentOS上优化Apache2性能
本文地址: https://pptw.com/jishu/754630.html
CentOS Apache2如何配置安全设置 如何在Apache2中配置虚拟主机

游客 回复需填写必要信息