CentOS 上 LAMP(Linux + Apache + MySQL/MariaDB + PHP)变慢 是很常见的问题,通常不是单一原因,而是多个环节叠加。下面按最常见 → 较少见给你一个系统性的排查思路。
现象:并发一高就卡,静态页也慢。
检查:
httpd -V | grep MPM
常见问题:
prefork 但 MaxClients 太小KeepAlive 或开太久建议:
<IfModule mpm_prefork_module>
StartServers 5
MinSpareServers 5
MaxSpareServers 10
MaxClients 150
MaxRequestsPerChild 3000
</IfModule>
或改用 event / worker(PHP 用 php-fpm)
现象:PHP 页面明显比 HTML 慢。
检查:
php -v
ps aux | grep php-fpm
✅ 推荐方案:
现象:页面卡在数据库查询。
检查慢查询:
SHOW PROCESSLIST;
开启慢查询日志:
slow_query_log = 1
slow_query_log_file = /var/log/mariadb/slow.log
long_query_time = 1
常见问题:
查看连接数:
SHOW STATUS LIKE 'Threads_connected';
现象:负载高,但 CPU 不高。
检查:
top
iostat -x 1
常见问题:
✅ 建议:
/tmp 使用 tmpfs现象:突然变慢,ssh 也卡。
free -m
swapon -s
✅ 解决:
现象:首次访问慢,后续正常。
检查:
getenforce
可临时测试:
setenforce 0
现象:访问日志慢,页面延迟几秒。
Apache 配置:
HostnameLookups Off
journalctl --disk-usage
清理:
journalctl --vacuum-size=200M
✅ 建议迁移:
top
free -m
df -h
iostat -x 1
mysqladmin processlist
apachectl -S
你可以贴出:
top 或 htop 截图我可以直接帮你定位是哪一层的问题。