温馨提示×

为什么linux lamp慢

小樊
37
2026-09-24 23:43:38
栏目: 智能运维

“Linux + LAMP(Linux + Apache + MySQL/MariaDB + PHP)变慢”是一个很常见的问题,通常不是单点原因,而是多个环节叠加。下面按最常见 → 较少见帮你梳理原因和优化方向。


一、最常见原因

1. Apache 配置不合理(最容易拖慢)

  • 使用了 prefork MPM + 大量空闲进程
  • MaxClients / MaxRequestWorkers 设得过大,内存爆掉
  • 开启了不必要的模块(如 mod_php 占用高)

✅ 优化:

# 查看 MPM
apachectl -V | grep MPM

# 推荐
- 静态内容多:worker / event
- PHP:php-fpm + Apache proxy_fcgi

2. PHP 性能差(代码 or 配置)

常见问题:

  • 使用 mod_php(慢且占内存)
  • 没开 OPcache
  • 框架过重(Laravel/Symfony 但无缓存)
  • 循环中查数据库

✅ 必做:

; php.ini
opcache.enable=1
opcache.memory_consumption=128

3. MySQL / MariaDB 慢(非常常见)

典型问题:

  • 没有索引
  • 慢查询
  • 连接数爆了
  • 配置是默认(小内存机器)

✅ 排查:

SHOW PROCESSLIST;
SHOW FULL PROCESSLIST;

✅ 开启慢查询日志:

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

4. 磁盘 IO 慢(云服务器常见)

  • 低配云盘(1–2 MB/s)
  • 日志写入太多
  • MySQL 数据目录在慢盘

✅ 检查:

iostat -x 1

5. 内存不足 → 频繁 Swap

一旦开始用 swap,LAMP 直接卡死。

✅ 检查:

free -h
swapon --show

二、网络 & 外部因素

6. DNS 解析慢

  • PHP 中用了 gethostbyname
  • MySQL 开了 skip-name-resolve 没开

✅ MySQL:

skip-name-resolve

7. 外部请求阻塞

  • 调用第三方 API(无超时)
  • curl 没设 timeout

三、系统层面

8. 文件描述符不够

高并发时 Apache/PHP 卡住。

ulimit -n

9. 时钟 / 时区问题

  • 大量 date() 调用
  • 没设置时区
date.timezone = Asia/Shanghai

四、快速自检清单(建议你照着看)

top
htop
free -h
iostat -x 1
apachectl -M
php -m | grep opcache
mysqladmin processlist

五、如果是“新服务器就慢”

通常是:

  • 1核1G 跑 LAMP(不合适)
  • 用 prefork + mod_php
  • 云盘 IO 差

✅ 推荐组合:

  • Apache + PHP-FPM
  • OPcache
  • MariaDB 调优
  • 至少 2G 内存

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

  • 服务器配置(CPU/内存)
  • 用的是 Apache 还是 Nginx
  • PHP 版本
  • 是整体慢还是某页面慢

我可以直接帮你给一份针对性优化方案。

0 踩