温馨提示×

ubuntu apache2如何调优

小樊
46
2025-10-04 12:27:00
栏目: 智能运维

Ubuntu Apache2调优指南

一、基础优化:快速提升性能

  1. 更新系统与软件包
    运行sudo apt update && sudo apt upgrade,确保Apache2及依赖包为最新版本,获取性能改进与安全补丁。
  2. 禁用不必要模块
    使用a2dismod module_name(如a2dismod status)禁用未使用的模块,减少内存占用与攻击面。
  3. 启用KeepAlive
    /etc/apache2/apache2.conf中配置:
    KeepAlive On
    MaxKeepAliveRequests 100  # 单个连接最大请求数
    KeepAliveTimeout 5        # 连接保持超时(秒)
    
    减少TCP握手次数,提升并发处理效率。
  4. 启用压缩
    安装mod_deflatesudo a2enmod deflate),添加配置:
    AddOutputFilterByType DEFLATE text/html text/plain text/css application/javascript
    
    压缩静态资源,降低传输体积。
  5. 配置缓存
    启用mod_cachemod_disk_cache,添加:
    LoadModule cache_module modules/mod_cache.so
    LoadModule cache_disk_module modules/mod_disk_cache.so
    CacheEnable disk /
    CacheRoot "/var/cache/apache2"
    CacheDirLevels 2
    CacheDirLength 1
    
    缓存静态内容,减少重复请求。

二、高级优化:针对高并发场景

  1. 调整MPM(多路复用模块)
    根据服务器用途选择MPM(编辑/etc/apache2/mods-enabled/mpm_*.conf):
    • prefork(适合兼容性场景,如旧版PHP):
      StartServers 5
      MinSpareServers 5
      MaxSpareServers 10
      MaxRequestWorkers 150  # 最大并发请求数
      MaxConnectionsPerChild 4000  # 子进程生命周期内最大请求数
      
    • worker/event(适合高并发动态内容,如Node.js/Python后端):
      StartServers 2
      MinSpareThreads 25
      MaxSpareThreads 75
      ThreadLimit 64
      ThreadsPerChild 25
      MaxRequestWorkers 150
      MaxConnectionsPerChild 0  # 0表示无限(需测试稳定性)
      
    修改后重启Apache:sudo systemctl restart apache2
  2. 负载均衡
    使用mod_proxy_balancer将请求分发到多台后端服务器,添加配置:
    Proxy balancer://mycluster
    BalancerMember http://backend1.example.com
    BalancerMember http://backend2.example.com
    ProxyPass / balancer://mycluster
    
    提升并发处理能力。
  3. 启用HTTP/2
    /etc/apache2/ports.conf中添加Listen 443 ssl http2,并确保mod_http2已启用(sudo a2enmod http2),提升协议效率。
  4. 优化SSL/TLS
    使用强加密套件(如ECDHE-ECDSA-AES128-GCM-SHA256),配置会话缓存:
    SSLProtocol all -SSLv3 -TLSv1 -TLSv1.1
    SSLCipherSuite ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256
    SSLSessionCache shmcb:/var/run/ssl_scache(512000)
    SSLSessionCacheTimeout 300
    
    减少SSL握手开销。

三、硬件与操作系统优化

  1. 硬件升级
    • 增加内存(应对高并发内存需求);
    • 使用SSD替代HDD(提升磁盘I/O速度);
    • 选择多核CPU(提升并行处理能力)。
  2. 调整内核参数
    编辑/etc/sysctl.conf,优化网络与磁盘设置:
    net.core.somaxconn = 4096  # 监听队列长度
    net.ipv4.tcp_tw_reuse = 1  # 复用TIME-WAIT连接
    vm.swappiness = 10         # 减少内存交换
    
    运行sudo sysctl -p使配置生效。

四、监控与维护

  1. 启用状态页面
    安装mod_statussudo a2enmod status),添加配置:
    <Location "/server-status">
        SetHandler server-status
        Require ip 127.0.0.1  # 仅允许本地访问
    </Location>
    
    访问http://localhost/server-status查看性能指标(如请求数、CPU占用)。
  2. 日志管理
    使用logrotate自动切割日志(编辑/etc/logrotate.d/apache2):
    /var/log/apache2/*.log {
        daily
        rotate 30
        compress
        delaycompress
        missingok
        notifempty
        create 640 root adm
        sharedscripts
        postrotate
            systemctl reload apache2
        endscript
    }
    
    避免日志文件过大占用磁盘空间。
  3. 定期审查
    • 分析error.log/var/log/apache2/error.log)排查错误;
    • 使用tophtop监控CPU/内存使用;
    • 通过ss -s查看连接数,调整MaxRequestWorkers

五、其他优化技巧

  • 使用CDN:将静态资源(图片、CSS、JS)托管到CDN,减轻服务器负担;
  • 限制访问:通过<Directory>指令限制敏感目录访问(如/admin);
  • 禁用.htaccess:在/etc/apache2/apache2.conf中设置AllowOverride None,避免频繁读取.htaccess文件。

以上优化措施需根据服务器实际负载(如并发数、内存大小)调整,建议每次修改1-2项后重启Apache(sudo systemctl restart apache2),并通过监控工具验证效果。

0