温馨提示×

ubuntu apache怎么优化性能

小樊
46
2026-09-05 07:40:01
栏目: 智能运维

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


一、选择合适的 MPM(最重要)

Apache 性能核心在于 MPM(Multi-Processing Module)

查看当前 MPM:

apache2ctl -V | grep -i mpm

1️⃣ 推荐使用 event(高并发首选)

sudo a2dismod php*
sudo a2enmod mpm_event
sudo systemctl restart apache2

适合:

  • 高并发
  • 静态资源 + 反向代理
  • PHP 用 PHP-FPM

2️⃣ 若使用 PHP

不要直接在 Apache 里跑 PHP 推荐:

sudo apt install php-fpm
sudo a2enmod proxy_fcgi setenvif
sudo a2enconf php-fpm

二、优化 MPM 配置

编辑:

sudo nano /etc/apache2/mods-available/mpm_event.conf

示例(2核4G):

<IfModule mpm_event_module>
    StartServers             2
    MinSpareThreads         25
    MaxSpareThreads         75
    ThreadLimit             64
    ThreadsPerChild         25
    MaxRequestWorkers      150
    MaxConnectionsPerChild   1000
</IfModule>

调整原则:

  • MaxRequestWorkers ≈ 内存 / 每进程内存
  • 避免 Apache 进程把内存吃满

三、关闭不必要的模块

查看已启用模块:

apache2ctl -M

常见可关闭:

sudo a2dismod autoindex status cgi negotiation

保留核心:

  • rewrite
  • headers
  • expires
  • deflate
  • proxy / proxy_fcgi

四、开启压缩(明显提速)

sudo a2enmod deflate

配置:

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

示例:

AddOutputFilterByType DEFLATE text/html text/css application/javascript application/json

五、开启浏览器缓存

sudo a2enmod expires headers
<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 调优

sudo nano /etc/apache2/apache2.conf
KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 5

说明:

  • 太高 → 占用连接
  • 太低 → 频繁建立连接

七、使用缓存层(强烈推荐)

1️⃣ 页面缓存

  • WordPress:Redis / Memcached
  • 静态站:直接 CDN

2️⃣ 反向代理缓存

sudo a2enmod cache cache_disk

八、系统层面优化(Ubuntu)

1️⃣ 文件描述符

ulimit -n

建议 ≥ 65535

2️⃣ TCP 参数

sudo nano /etc/sysctl.conf
net.core.somaxconn = 65535
net.ipv4.tcp_tw_reuse = 1
sudo sysctl -p

九、使用 PHP-FPM(如果你用 PHP)

sudo nano /etc/php/*/fpm/pool.d/www.conf
pm = dynamic
pm.max_children = 50
pm.start_servers = 10
pm.min_spare_servers = 5
pm.max_spare_servers = 20

十、监控与压测

查看状态

sudo apache2ctl status

压测

ab -n 1000 -c 100 http://your-site/

十一、最推荐组合(生产环境)

✅ Ubuntu
✅ Apache + mpm_event
✅ PHP-FPM
✅ deflate + expires
✅ Redis 缓存
✅ CDN


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

  • 服务器配置(CPU / 内存)
  • 是否用 PHP / WordPress
  • 访问量级别

我可以给你直接可用的配置文件

0