Apache2 在 Ubuntu 上“卡”(反应慢、请求卡住、负载高)通常不是单一原因,下面按最常见 → 较少见的顺序给你一份排查清单。
Ubuntu 默认 Apache 使用 mpm_event(或 prefork),但很多人没改配置就直接跑。
apachectl -V | grep -i mpm
常见问题:
mpm_prefork + PHP(慢、占内存)MaxRequestWorkers 太小 → 并发一高就排队KeepAlive 开太久 → 连接被占着✅ 建议:
KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 5
prefork 示例(内存够才用):
<IfModule mpm_prefork_module>
StartServers 4
MinSpareServers 4
MaxSpareServers 8
MaxRequestWorkers 150
MaxConnectionsPerChild 3000
</IfModule>
Apache 本身很快,但:
表现:
top 里 apache2 CPU 不高但内存涨✅ 排查:
sudo tail -f /var/log/apache2/access.log
sudo tail -f /var/log/apache2/error.log
df -h
iostat -x 1
常见问题:
/var/log/apache2 太大Apache 默认做:
✅ 建议:
HostnameLookups Off
并确认:
Listen 80
# 不要只 Listen [::]:80 而没 IPv6
Ubuntu 默认用 ufw + AppArmor
sudo ufw status
sudo aa-status
有时:
free -h
swapon --show
一旦 Apache 进 swap:
apache2ctl -M
常见拖慢模块:
✅ 推荐架构:
Apache + php-fpm
# 看当前连接
ss -tnp | grep apache2
# 看进程状态
ps aux | grep apache2
# 看负载
top
# 看错误
sudo tail -n 50 /var/log/apache2/error.log
你可以补充:
我可以直接帮你给一套最优 apache2 配置。