温馨提示×

ubuntu apache2如何调优

小樊
44
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