温馨提示×

ubuntu apache2如何调性能

小樊
44
2026-09-26 09:14:22
栏目: 智能运维

在 Ubuntu 上优化 Apache2 性能,通常从工作模式、模块、缓存、系统参数、静态资源几个方面入手。下面按“实用优先”的顺序说明。


一、选择合适的工作模式(最重要)

Apache 在 Ubuntu 默认通常是 prefork 或 event(Apache 2.4 推荐 event)。

查看当前 MPM:

apache2ctl -V | grep -i mpm

推荐方案

  • 高并发 + 静态/代理:event(性能最好)
  • 老 PHP(mod_php):只能用 prefork
  • PHP-FPM:用 event + proxy_fcgi

切换 MPM(以 event 为例):

sudo a2dismod mpm_prefork
sudo a2enmod mpm_event
sudo systemctl restart apache2

二、调整 MPM 参数(核心性能点)

配置文件位置:

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

示例(2–4 GB 内存服务器):

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

要点:

  • MaxRequestWorkers 控制并发上限
  • MaxConnectionsPerChild 防止内存泄漏
  • 不要盲目调太大,内存会爆

三、关闭不必要的模块

查看已启用模块:

apache2ctl -M

常见可关闭的:

sudo a2dismod status
sudo a2dismod autoindex
sudo a2dismod cgi

(生产环境一般不需要)


四、开启缓存与压缩

1. 开启 gzip 压缩

sudo a2enmod deflate

示例配置:

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

2. 浏览器缓存

sudo a2enmod expires
<IfModule mod_expires.c>
    ExpiresActive On
    ExpiresByType image/jpg "access plus 30 days"
    ExpiresByType text/css "access plus 7 days"
</IfModule>

五、使用 PHP-FPM(强烈推荐)

比 mod_php 快且稳:

sudo apt install php-fpm
sudo a2enmod proxy_fcgi setenvif
sudo a2enconf php-fpm
sudo systemctl restart apache2

六、系统层面优化(Ubuntu)

1. 文件描述符

ulimit -n

如太小,修改:

/etc/security/limits.conf

2. TCP 参数(简单版)

sudo sysctl -w net.core.somaxconn=1024
sudo sysctl -w net.ipv4.tcp_tw_reuse=1

七、静态资源交给 Nginx / CDN(进阶)

高并发场景:

  • Apache 处理动态
  • Nginx / CDN 处理静态

八、常用排查命令

top
htop
apache2ctl status
journalctl -u apache2

九、最简优化清单(直接照做)

  1. 用 event MPM
  2. 用 PHP-FPM
  3. 开 deflate + expires
  4. 关无用模块
  5. 合理设置 MaxRequestWorkers

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

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

我可以直接给你一套可用配置。

0 踩