温馨提示×

ubuntu lamp为何访问缓慢

小樊
43
2026-10-15 17:34:13
栏目: 智能运维

在 Ubuntu 上搭建的 LAMP(Linux + Apache + MySQL + PHP)环境访问缓慢,通常不是单一原因造成的,下面按常见程度和排查顺序帮你梳理一下。


一、最常见原因

1. DNS 解析慢(非常常见)

Apache 或 PHP 在以下情况会做 DNS 反向解析:

  • 访问日志中记录主机名
  • PHP 使用 gethostbyaddr()
  • MySQL 连接验证

表现:首字节时间很长(TTFB 高)

解决:

# Apache 关闭反向解析
sudo nano /etc/apache2/apache2.conf

添加或修改:

HostnameLookups Off

MySQL:

-- 给数据库用户使用 IP,不要使用主机名
GRANT ALL ON db.* TO 'user'@'127.0.0.1';

2. Apache 使用了不合适的 MPM 模式

Ubuntu 默认可能是 mpm_prefork(进程多、耗内存)

apache2ctl -M | grep mpm

建议:

  • PHP 用 php-fpm + mpm_event
  • 或至少优化 prefork 参数

3. PHP 执行慢

检查:

  • 是否开启 display_errors
  • 是否有外部请求(curl、API)
  • 是否频繁连接远程服务

排查方法:

sudo apt install php-xdebug

或直接使用:

php -m

4. MySQL 查询慢

SHOW PROCESSLIST;

常见原因:

  • 没有索引
  • 慢查询
  • 连接数过多

开启慢查询日志:

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

二、系统层面原因

5. 内存不足 / 频繁 Swap

free -h
top

如果 Swap 使用高:

  • 增加内存
  • 优化 Apache / MySQL 配置

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

iostat -x 1

如果是低配云盘:

  • 避免日志频繁写盘
  • 关闭不必要日志

三、网络层面

7. 本地访问慢 vs 外网访问慢

  • 本地慢 → 程序/配置问题
  • 外网慢 → 带宽、DNS、防火墙

测试:

curl -I http://localhost
curl -I http://你的IP

8. IPv6 导致延迟

Ubuntu 默认启用 IPv6,Apache 可能先尝试 IPv6

sudo nano /etc/apache2/ports.conf

改为:

Listen 0.0.0.0:80

四、快速自检清单 ✅

  • [ ] HostnameLookups Off
  • [ ] 使用 php-fpm
  • [ ] MySQL 用 127.0.0.1
  • [ ] 无慢查询
  • [ ] 内存未耗尽
  • [ ] 未频繁写日志
  • [ ] IPv6 已处理

五、如果你愿意,我可以更进一步

你可以补充:

  1. Ubuntu 版本
  2. Apache / PHP / MySQL 版本
  3. 是本地访问慢还是外网访问慢
  4. 是否是 WordPress / Laravel / 原生 PHP

我可以直接给你针对性配置方案。

0 踩