Ubuntu + Apache2 卡顿的原因通常比较多,需要结合服务器配置、访问量、日志、资源占用、程序本身来判断。下面按「常见原因 → 排查方法 → 解决办法」给你一个系统性的分析。
Apache2 本身并不慢,慢通常是 CPU / 内存 / IO 被打满。
排查:
top
htop
free -h
df -h
常见现象:
解决办法:
Apache 有三种 MPM:
prefork(默认,老、耗内存)workerevent(推荐)查看当前 MPM:
apache2ctl -M | grep mpm
问题:
prefork + PHPMaxRequestWorkers 设太大,直接把内存吃光解决办法(推荐):
✅ 使用 mpm_event + PHP-FPM
sudo a2dismod mpm_prefork
sudo a2enmod mpm_event
sudo apt install php-fpm
sudo a2enmod proxy_fcgi setenvif
sudo a2enconf php8.x-fpm
然后限制并发:
<IfModule mpm_event_module>
StartServers 2
MinSpareThreads 25
MaxSpareThreads 75
ThreadLimit 64
ThreadsPerChild 25
MaxRequestWorkers 150
MaxConnectionsPerChild 0
</IfModule>
即使 Apache 没问题,PHP 慢也会导致 Apache 卡死。
常见原因:
排查:
tail -f /var/log/apache2/error.log
解决:
sudo apt install php-opcache
典型表现:
access.log 飞速增长排查:
tail -f /var/log/apache2/access.log
解决办法:
sudo apt install libapache2-mod-evasive
sudo ufw enable
Apache 日志可能几年没清理。
排查:
du -sh /var/log/apache2/*
解决:
sudo truncate -s 0 /var/log/apache2/access.log
sudo truncate -s 0 /var/log/apache2/error.log
或配置日志轮转:
sudo apt install logrotate
Apache 默认会做 DNS 反向解析。
解决:
HostnameLookups Off
问题:
推荐配置:
KeepAlive On
KeepAliveTimeout 5
MaxKeepAliveRequests 100
排查:
iotop
常见原因:
解决:
/tmp✅ 内存是否爆满?
✅ 是否使用 prefork?
✅ PHP 是否直接跑在 Apache?
✅ access.log 是否异常大?
✅ 是否有大量并发连接?
如果你现在就想“先让网站快起来”:
1️⃣ 换成 mpm_event + php-fpm
2️⃣ 限制 MaxRequestWorkers
3️⃣ 开启 OPcache
4️⃣ 清理日志
5️⃣ 上 CDN(Cloudflare)
你可以直接发我:
top / htop 截图我可以 直接给你一套最优配置,不用你自己试。