温馨提示×

centos lnmp为何访问缓慢

小樊
39
2026-10-12 02:15:19
栏目: 智能运维

在 CentOS 上部署 LNMP(Linux + Nginx + MySQL/MariaDB + PHP) 后访问缓慢,原因通常集中在系统、网络、服务配置、代码、数据库这几个层面。下面按常见原因 → 排查方法 → 解决建议给你一个实用清单。


一、服务器本身资源问题(最常见)

1. CPU / 内存不足

  • 表现:页面偶尔卡死、SSH 也卡
  • 排查:
top
free -h

✅ 解决:

  • 升级配置
  • 关闭不必要服务
  • 优化 PHP / MySQL 内存占用

二、Nginx 配置问题

2. worker 进程数不合理

worker_processes auto;
events {
    worker_connections 1024;
}

✅ 建议:

  • worker_processes 设为 CPU 核心数
  • 高并发可提高到 2048~4096

3. 未开启 gzip

gzip on;
gzip_types text/css application/javascript;

✅ 效果:页面体积可缩小 60%+


4. 静态资源走 PHP

  • 图片、JS、CSS 被 Nginx 错误转发给 PHP-FPM

✅ 正确示例:

location ~ \.php$ {
    fastcgi_pass 127.0.0.1:9000;
}

三、PHP-FPM 配置问题(非常常见)

5. PHP-FPM 进程太少

pm = dynamic
pm.max_children = 5   # 太小

✅ 建议:

pm.max_children = 50~100
pm.start_servers = 20
pm.min_spare_servers = 10
pm.max_spare_servers = 30

6. PHP 慢日志未开

slowlog = /var/log/php-fpm/slow.log
request_slowlog_timeout = 2s

✅ 可直接看到哪些函数慢


四、MySQL / MariaDB 问题

7. 数据库未优化

  • 无索引
  • 慢查询

排查:

SHOW PROCESSLIST;

开启慢查询:

slow_query_log = 1
long_query_time = 1

✅ 建议:

  • 加索引
  • 用 Redis 缓存
  • 避免 SELECT *

五、DNS / 网络问题

8. DNS 解析慢(非常隐蔽)

PHP 中:

gethostbyname()
mail()

✅ 解决:

  • 使用本地 DNS
  • 禁用不必要远程请求

9. 服务器在中国大陆,用户在国外 / 反之

✅ 解决:

  • CDN
  • 对象存储静态资源

六、CentOS 系统层面

10. 防火墙 / SELinux

getenforce
systemctl status firewalld

✅ 可临时关闭测试:

setenforce 0

11. 文件描述符限制

ulimit -n

✅ 修改:

* soft nofile 65535
* hard nofile 65535

七、代码层面

12. 框架未开缓存

  • Laravel / ThinkPHP 未开 OPcache

✅ 安装:

yum install php-opcache

八、快速自查顺序(推荐)

top
free -h
nginx -t
php-fpm -t
SHOW PROCESSLIST;

九、如果你愿意,我可以更精准帮你

你可以补充:

  1. CentOS 版本(7 / 8 / Stream)
  2. LNMP 是源码还是一键包(如 lnmp.org)
  3. 访问慢是 首页慢 还是 所有页面
  4. 是否数据库密集型(如商城 / CMS)

我可以直接帮你 看配置、给优化方案。

0 踩