温馨提示×

ubuntu apache怎样优化性能

小樊
43
2026-09-11 04:26:44
栏目: 智能运维

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


一、系统层面优化(基础)

1. 调整系统资源限制

编辑:

sudo nano /etc/security/limits.conf

示例(针对 www-data 用户):

www-data soft nofile 65535
www-data hard nofile 65535

2. 调整内核参数(TCP / 文件句柄)

编辑:

sudo nano /etc/sysctl.conf

常用优化:

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

应用:

sudo sysctl -p

二、Apache MPM 选择与调优(最关键)

1. 查看当前 MPM

apachectl -V | grep -i mpm

2. Ubuntu 常用 MPM

  • prefork(兼容老 PHP,性能一般)
  • worker(线程,中等性能)
  • event(推荐)(高并发最佳)

切换 MPM(以 event 为例):

sudo a2dismod mpm_prefork
sudo a2enmod mpm_event
sudo systemctl restart apache2

3. 调整 MPM 配置

编辑:

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

示例(4核8G服务器):

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

⚠️ MaxRequestWorkers 不要超过内存 / 每进程内存


三、关闭不必要模块(减少内存)

查看已启用模块:

apache2ctl -M

常见可禁用的模块:

sudo a2dismod autoindex status cgi negotiation
sudo systemctl restart apache2

四、开启缓存与压缩

1. 启用缓存模块

sudo a2enmod expires headers cache cache_disk
sudo systemctl restart apache2

示例配置:

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

2. 启用 Gzip 压缩

sudo a2enmod deflate
<IfModule mod_deflate.c>
    AddOutputFilterByType DEFLATE text/html text/plain text/xml
    AddOutputFilterByType DEFLATE text/css application/javascript
</IfModule>

五、PHP 环境优化(如使用 PHP)

1. 使用 PHP-FPM(强烈推荐)

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

2. 调整 PHP-FPM

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

六、静态资源与架构优化

1. 静态文件走 Nginx / CDN

  • Apache 处理动态
  • Nginx / CDN 处理静态(最佳实践)

2. 使用 HTTP/2

sudo a2enmod http2
Protocols h2 http/1.1

七、日志与监控

1. 减少日志量

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

2. 监控工具

  • htop
  • apachetop
  • netdata

八、简单性能检测

ab -n 1000 -c 100 http://localhost/

或:

sudo apt install apachetop
apachetop

总结(优先级)

  1. ✅ 使用 event + PHP-FPM
  2. ✅ 合理设置 MPM 参数
  3. ✅ 开启 压缩 / 缓存
  4. ✅ 禁用无用模块
  5. ✅ 静态资源分离 / CDN

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

  • Ubuntu 版本
  • Apache 版本
  • 服务器配置(CPU / 内存)
  • 是否使用 PHP / MySQL

我可以直接帮你给出精准配置参数

0