温馨提示×

怎么优化ubuntu apache2性能

小樊
44
2026-09-02 04:10:53
栏目: 智能运维

优化 Ubuntu 上 Apache2 的性能,通常可以从系统层面、Apache 配置、模块管理、缓存与压缩、PHP/后端、监控几个方面入手。下面给你一套比较实用、可落地的优化方案。


一、系统层面优化

1. 调整内核参数(高并发必备)

编辑 /etc/sysctl.conf

net.core.somaxconn = 65535
net.ipv4.tcp_max_syn_backlog = 65535
net.ipv4.tcp_tw_reuse = 1
fs.file-max = 1000000

应用:

sysctl -p

2. 提高文件描述符限制

编辑 /etc/security/limits.conf

* soft nofile 100000
* hard nofile 100000

二、Apache MPM 选择与调优(最重要)

1. 查看当前 MPM

apachectl -V | grep MPM

2. Ubuntu 推荐方案

  • 静态内容 / 高并发event
  • PHP(mod_php)prefork
  • PHP-FPMevent + php-fpm(推荐)

启用 event:

a2dismod mpm_prefork
a2enmod mpm_event

3. MPM 配置示例(event)

编辑 /etc/apache2/mods-enabled/mpm_event.conf

<IfModule mpm_event_module>
    StartServers             4
    MinSpareThreads         64
    MaxSpareThreads        128
    ThreadLimit            256
    ThreadsPerChild         64
    MaxRequestWorkers      512
    MaxConnectionsPerChild  10000
</IfModule>

根据内存调整:

MaxRequestWorkers ≈ 可用内存 / 每进程内存

三、关闭不必要的模块

查看已启用模块:

apache2ctl -M

常见可关闭:

a2dismod status
a2dismod autoindex
a2dismod cgi

保持最小集:

  • rewrite
  • headers
  • deflate
  • expires
  • ssl(如需要)

四、开启压缩与缓存

1. 启用压缩(gzip)

a2enmod deflate

/etc/apache2/mods-enabled/deflate.conf

<IfModule mod_deflate.c>
    AddOutputFilterByType DEFLATE text/html text/css application/javascript
</IfModule>

2. 浏览器缓存

a2enmod expires

示例:

<IfModule mod_expires.c>
    ExpiresActive On
    ExpiresByType image/jpg "access plus 1 month"
    ExpiresByType text/css "access plus 1 week"
    ExpiresByType application/javascript "access plus 1 week"
</IfModule>

五、KeepAlive 优化

/etc/apache2/apache2.conf

KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 5

避免过长占用连接。


六、PHP 优化(如使用 PHP)

推荐:Apache + PHP-FPM

apt install php-fpm
a2enmod proxy_fcgi setenvif
a2enconf php8.2-fpm

关闭 mod_php:

a2dismod php8.2

PHP-FPM 池优化:

pm = dynamic
pm.max_children = 50
pm.start_servers = 10
pm.min_spare_servers = 5
pm.max_spare_servers = 20

七、静态资源与反向代理

  • 静态文件直接由 Apache 处理
  • 动态接口放 Nginx / 后端服务
  • 或 Apache 做反代:
ProxyPass /api/ http://127.0.0.1:8080/

八、日志优化(高并发重要)

减少日志量:

CustomLog ${APACHE_LOG_DIR}/access.log combined env=!dontlog

或使用:

LogLevel warn

九、监控与压测

1. 状态页

a2enmod status

访问:

http://your-server/server-status

2. 压测工具

ab -n 10000 -c 200 http://localhost/

或:

wrk -t4 -c200 -d30s http://localhost/

十、推荐组合(实战)

最佳实践

  • Ubuntu 22.04
  • Apache2 + mpm_event
  • PHP-FPM
  • gzip + expires
  • 禁用无用模块
  • 反向代理动态服务

如果你愿意,可以告诉我:

  • 服务器配置(CPU / 内存)
  • 主要用途(PHP / 静态 / API)
  • 当前并发量

我可以帮你直接给出一份可用的 Apache 配置文件

0