温馨提示×

centos lamp为何卡顿

小樊
37
2026-09-30 09:39:30
栏目: 智能运维

CentOS 上搭建的 LAMP(Linux + Apache + MySQL/MariaDB + PHP) 环境出现卡顿,通常不是单一原因,而是资源、配置、代码、IO等多方面叠加导致的。下面按常见原因逐一说明,并给出排查与优化建议。


一、服务器资源不足(最常见)

1. CPU 占用高

  • 原因:
    • PHP 程序死循环、复杂计算
    • Apache 进程过多
    • MySQL 慢查询
  • 排查:
top
htop
ps aux | sort -k3 -rn | head

2. 内存不足

  • 表现:
    • 频繁使用 swap
    • 服务响应变慢
  • 排查:
free -h
vmstat 1
  • 如果 Swap 使用很高,说明内存不够

✅ 解决:

  • 增加内存
  • 限制 Apache / PHP 进程数
  • 优化 MySQL 缓存

二、Apache 配置不合理(非常常见)

1. 使用 prefork 模式 + 进程太多

CentOS 默认 Apache 多用 prefork:

httpd -V | grep MPM

问题:

  • 每个请求一个进程
  • 并发一高就卡死

✅ 优化(/etc/httpd/conf/httpd.conf 或 conf.modules.d):

<IfModule mpm_prefork_module>
    StartServers        5
    MinSpareServers     5
    MaxSpareServers     10
    MaxRequestWorkers   150
    MaxConnectionsPerChild 1000
</IfModule>

或改用 event / worker(需 PHP 使用 FPM)


三、MySQL / MariaDB 性能问题

1. 慢查询

SHOW PROCESSLIST;

或开启慢查询日志:

slow_query_log = 1
slow_query_log_file = /var/log/mariadb/slow.log
long_query_time = 1

✅ 优化:

  • 加索引
  • 避免 SELECT *
  • 减少 Join

2. 数据库缓存太小

查看:

SHOW VARIABLES LIKE 'innodb_buffer_pool_size';

✅ 一般设为物理内存的 50%~70%


三、磁盘 IO 瓶颈

1. 机械硬盘 / 低 IOPS 云盘

  • 日志写入频繁
  • MySQL 大量写盘

排查:

iostat -x 1

✅ 优化:

  • 关闭不必要日志
  • 使用 SSD
  • 分离数据库与 Web

四、PHP 问题

1. 未使用 OPcache

CentOS 默认可能未开启:

php -m | grep opcache

✅ 开启:

yum install php-opcache
opcache.enable=1
opcache.memory_consumption=128

2. PHP 脚本效率低

  • 循环查数据库
  • 文件操作频繁
  • 外部 API 超时

五、网络 & 外部因素

  • 带宽被打满
  • 被 CC / 爬虫攻击
  • DNS 解析慢

排查:

iftop
netstat -an | grep :80 | wc -l

六、CentOS 自身问题

  • CentOS 6 已停止维护(不建议再用)
  • 内核 / 软件过旧
  • SELinux 影响性能(可临时测试关闭)

七、快速定位思路(实用)

# 看整体
top

# 看谁最忙
ps aux --sort=-%cpu | head
ps aux --sort=-%mem | head

# 看网络
netstat -ant | grep :80 | wc -l

# 看 MySQL
mysqladmin processlist

总结一句话

CentOS LAMP 卡顿,90% 是:Apache 进程太多 + 内存不足 + MySQL 慢查询 + 没开 OPcache

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

  • CentOS 版本
  • Apache / PHP / MySQL 版本
  • 服务器配置(CPU/内存)
  • 是访问慢还是后台慢

我可以直接帮你针对性的调优配置。

0 踩