温馨提示×

怎样优化ubuntu apache2性能

小樊
39
2026-09-17 09:32:47
栏目: 智能运维

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


一、系统层面优化

1. 调整内核参数(/etc/sysctl.conf)

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

执行:

sysctl -p

2. 提高文件描述符限制

ulimit -n 65535

并在 /etc/security/limits.conf 中添加:

* soft nofile 65535
* hard nofile 65535

二、Apache MPM 模式选择(关键)

查看当前 MPM

apache2ctl -V | grep MPM

推荐:

  • 静态内容 / 高并发event(默认新版本)
  • PHP(非 FPM)prefork

修改 MPM 配置

编辑:

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

示例(4 核 8G):

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

三、关闭不必要的模块

查看已启用模块:

a2dismod

常见可关闭的:

a2dismod status autoindex cgi negotiation userdir

保留核心:

  • rewrite
  • headers
  • ssl
  • proxy(如使用)

四、开启缓存与压缩

1. 启用压缩

a2enmod deflate

配置:

<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"
</IfModule>

五、PHP 优化(如使用 PHP)

推荐使用 PHP-FPM

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

PHP-FPM 配置:

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

六、日志优化

减少日志量

CustomLog ${APACHE_LOG_DIR}/access.log combined env=!dontlog
SetEnvIf Request_URI "\.(css|js|png)$" dontlog

或关闭不必要日志

LogLevel warn

七、使用 KeepAlive(适度)

KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 5

八、使用缓存层(架构级)

  • 静态资源 → Nginx / CDN
  • 动态内容 → Redis / OPcache
  • Apache 前置:
    用户 → Nginx/CDN → Apache
    

九、监控与压测

工具

apt install apache2-utils
ab -n 1000 -c 100 http://localhost/

监控

htop
apache2ctl status

十、最简推荐组合(生产常用)

✅ Ubuntu + Apache(event) + PHP-FPM
✅ 开启 deflate / expires
✅ 关闭无用模块
✅ CDN 加速静态资源


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

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

我可以直接帮你写一套针对性配置

0