温馨提示×

ubuntu lnmp为何访问缓慢

小樊
50
2026-10-12 20:13:38
栏目: 智能运维

在 Ubuntu 上搭建 LNMP(Linux + Nginx + MySQL + PHP) 后访问缓慢,原因通常集中在配置、资源、网络、代码四个方面。下面按最常见 → 较少见的顺序给你系统排查思路。


一、最常见原因(80% 问题在这里)

1️⃣ DNS 解析慢(非常常见)

表现:第一次访问慢,后续快;或 PHP 请求慢。

原因

  • PHP gethostbyname()
  • MySQL 使用 localhost 而不是 127.0.0.1
  • 服务器 DNS 配置错误

解决

✅ MySQL 配置

# my.cnf
[mysqld]
skip-name-resolve

并连接用:

127.0.0.1 而不是 localhost

✅ 检查 DNS

cat /etc/resolv.conf

推荐:

nameserver 8.8.8.8
nameserver 1.1.1.1

2️⃣ PHP-FPM 配置不合理

表现:并发稍高就卡死

查看

ps aux | grep php-fpm

常见错误

pm = dynamic
pm.max_children = 5   # 太小

推荐配置

pm = dynamic
pm.max_children = 50
pm.start_servers = 10
pm.min_spare_servers = 5
pm.max_spare_servers = 20

3️⃣ Nginx 配置问题

表现:静态资源也慢

常见问题

  • 未开启 sendfile
  • 未开启 gzip
  • 使用了 .htaccess(PHP 框架)

推荐 Nginx 配置

sendfile on;
tcp_nopush on;
gzip on;
gzip_types text/css application/javascript;

二、MySQL 性能问题

4️⃣ MySQL 慢查询

SHOW PROCESSLIST;

开启慢日志:

slow_query_log = 1
long_query_time = 1

✅ 加索引
✅ 避免 SELECT *


5️⃣ MySQL 内存太小

free -h

低内存建议:

innodb_buffer_pool_size = 256M

三、系统与网络问题

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

iostat -x 1

解决:

  • 使用 SSD
  • 关闭 swap(或调低 swappiness)
sysctl vm.swappiness=10

7️⃣ 防火墙 / 安全组

  • 服务器安全组限制
  • fail2ban 误封

四、程序层面问题(容易被忽略)

8️⃣ PHP 框架问题

  • Laravel / ThinkPHP 未开启缓存
  • 每次请求都加载大量配置

✅ 开启:

  • OPcache
  • 路由缓存
  • 配置缓存

9️⃣ 外部请求阻塞

如:

  • 调用第三方 API
  • 发送邮件
  • 微信/支付宝回调

✅ 改成异步队列


五、快速自检清单(建议你逐条对照)

# 1. 系统资源
top
free -h
df -h

# 2. Web 服务
nginx -t
systemctl status php8.1-fpm

# 3. 数据库
mysqladmin status

# 4. 网络
ping 8.8.8.8
curl -I http://localhost

六、如果你愿意,我可以进一步帮你精确定位

你可以补充:

  1. Ubuntu 版本(20.04 / 22.04?)
  2. Nginx / PHP / MySQL 版本
  3. 是首页慢还是接口慢
  4. 本地访问慢还是外网慢
  5. 是否用了 Laravel / WordPress / 自写 PHP

我可以给你针对性优化配置。

0 踩