温馨提示×

Ubuntu Apache2性能调优步骤

小樊
47
2025-09-23 17:31:39
栏目: 智能运维

Ubuntu Apache2性能调优步骤

1. 基础准备

  • 更新系统与软件包:运行sudo apt update && sudo apt upgrade,确保Apache2及依赖包为最新版本,获取性能改进与安全修复。
  • 安装Apache2:若未安装,使用sudo apt install apache2完成基础部署。

2. 选择并配置合适的MPM模块

MPM(多处理模块)是Apache2的核心组件,需根据服务器负载类型选择:

  • prefork:适用于需要稳定性的场景(如兼容旧版CGI应用),配置示例(/etc/apache2/mods-enabled/mpm_prefork.conf):
    <IfModule mpm_prefork_module>
        StartServers 5
        MinSpareServers 5
        MaxSpareServers 10
        MaxRequestWorkers 150
        MaxConnectionsPerChild 4000
    </IfModule>
    
  • worker:适用于高并发场景(如动态网站),使用多线程处理,配置示例(/etc/apache2/mods-enabled/mpm_worker.conf):
    <IfModule mpm_worker_module>
        StartServers 5
        MinSpareThreads 256
        MaxSpareThreads 768
        ThreadLimit 64
        ThreadsPerChild 25
        MaxRequestWorkers 150
        MaxConnectionsPerChild 4000
    </IfModule>
    
  • event:适用于高并发长连接(如WebSocket、HTTP/2),性能最优,配置示例(/etc/apache2/mods-enabled/mpm_event.conf):
    <IfModule mpm_event_module>
        StartServers 5
        MinSpareThreads 256
        MaxSpareThreads 768
        ThreadLimit 64
        ThreadsPerChild 25
        MaxRequestWorkers 150
        MaxConnectionsPerChild 4000
    </IfModule>
    

    注意:修改MPM配置后需重启Apache(sudo systemctl restart apache2)。

3. 启用关键性能模块

  • mod_deflate:压缩HTML、CSS、JS等静态内容,减少传输体积。在/etc/apache2/mods-enabled/deflate.conf中添加:
    AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css application/javascript application/json
    
  • mod_expires:设置静态资源缓存时间,降低重复请求。在/etc/apache2/mods-enabled/expires.conf中添加:
    ExpiresActive On
    ExpiresByType image/jpg "access plus 1 year"
    ExpiresByType text/css "access plus 1 month"
    ExpiresByType application/javascript "access plus 1 month"
    
  • mod_cache:缓存动态内容(如PHP页面),减轻服务器负载。启用mod_cachemod_cache_disk,并在配置中添加:
    LoadModule cache_module modules/mod_cache.so
    LoadModule cache_disk_module modules/mod_cache_disk.so
    CacheEnable disk /
    CacheRoot "/var/cache/apache2"
    CacheDirLevels 2
    CacheDirLength 1
    
  • mod_rewrite:优化URL结构,提升SEO与用户体验。启用后配置重写规则(如/etc/apache2/sites-available/example.conf):
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]
    

    操作:使用sudo a2enmod deflate expires cache cache_disk rewrite启用模块,修改配置后重启Apache。

4. 优化KeepAlive设置

启用KeepAlive减少TCP握手开销,提升并发效率。在/etc/apache2/apache2.conf中调整:

KeepAlive On
MaxKeepAliveRequests 100  # 单个连接最大请求数
KeepAliveTimeout 5        # 连接保持时间(秒)

说明MaxKeepAliveRequests过小会导致频繁重建连接,过大则会占用内存;KeepAliveTimeout过长会增加无效连接占用。

5. 调整并发连接参数

根据服务器资源(CPU、内存)限制并发连接,避免过载:

  • MaxRequestWorkers(或MaxClients):最大并发请求数,建议设置为内存容量的1/4(如8GB内存可设为2000);
  • MaxConnectionsPerChild:每个子进程处理的最大请求数,设为非零值(如4000)可防止内存泄漏。

6. 启用压缩与缓存

  • 压缩:通过mod_deflate压缩静态资源,减少网络传输时间(如上述mod_deflate配置);
  • 缓存:使用mod_cachemod_expires缓存静态内容(如图片、CSS),降低服务器负载(如上述mod_cachemod_expires配置)。

7. 禁用不必要的模块

禁用未使用的模块,减少资源消耗与攻击面。使用sudo a2dismod module_name(如sudo a2dismod status禁用状态模块),保留必需模块(如rewritessldeflate)。

8. 监控与日志优化

  • 启用状态页面:使用mod_status监控性能指标,在/etc/apache2/mods-enabled/status.conf中配置:
    LoadModule status_module modules/mod_status.so
    ExtendedStatus On
    <Location "/server-status">
        SetHandler server-status
        Require ip 127.0.0.1  # 仅允许本地访问
    </Location>
    
    访问http://服务器IP/server-status查看实时性能数据;
  • 日志轮转:使用logrotate自动清理过期日志,避免日志文件过大占用磁盘空间(默认配置/etc/logrotate.conf,无需额外修改)。

9. 系统级优化

  • 调整内核参数:修改/etc/sysctl.conf优化网络栈,添加:
    net.ipv4.tcp_tw_reuse = 1       # 复用TIME_WAIT连接
    net.core.somaxconn = 4096       # 增加监听队列长度
    net.ipv4.tcp_max_syn_backlog = 4096  # 增加SYN队列长度
    
    运行sudo sysctl -p使配置生效;
  • 使用SSD:将Apache数据目录(如/var/www/html)放在SSD上,提升磁盘I/O性能;
  • 增加内存:内存越大,Apache能处理的并发请求越多。

10. 测试与迭代

  • 压力测试:使用ab(Apache Benchmark)工具模拟高并发请求,评估调优效果:
    ab -n 1000 -c 100 http://yourdomain.com/
    
    -n:总请求数;-c:并发数);
  • 监控资源:使用tophtopvmstat等工具监控CPU、内存、磁盘I/O使用率,根据实际情况调整参数(如MaxRequestWorkers)。

0