温馨提示×

laravel在centos慢什么原因

小樊
42
2026-09-27 00:31:49
栏目: 智能运维

在 CentOS 上运行 Laravel 变慢,通常不是单一原因,而是系统环境 + PHP 配置 + Laravel 自身 + 资源瓶颈共同作用的结果。下面按常见原因 → 排查方法 → 解决建议来总结。


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

1. PHP 未启用 OPcache(最常见)

Laravel 依赖大量 PHP 文件,没有 OPcache 会非常慢。

检查:

php -m | grep opcache

解决:

yum install php-opcache

php.ini 中:

opcache.enable=1
opcache.memory_consumption=128
opcache.revalidate_freq=60

重启 PHP:

systemctl restart php-fpm

2. 未开启 Laravel 优化(生产环境必做)

php artisan config:cache
php artisan route:cache
php artisan view:cache
php artisan optimize

3. 使用 php artisan serve 或 Apache(慢)

  • php artisan serve 只适合开发
  • Apache + mod_php 性能差

✅ 推荐:

  • Nginx + PHP-FPM

二、CentOS 系统层面原因

4. SELinux 导致文件访问慢

getenforce

如果是 Enforcing,可能拖慢 IO。

临时测试:

setenforce 0

如果变快,说明是 SELinux 问题(不要长期关闭,需配置策略)。


5. 防火墙 / DNS 解析慢

Laravel 或 PHP 在做:

  • 邮件发送
  • 第三方 API
  • gethostbyname

会卡在 DNS。

测试:

ping example.com

慢的话:

  • 修改 /etc/resolv.conf
  • 使用内网 DNS

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

  • 低配云盘
  • 日志过多
iostat -x 1

解决:

  • 关 debug 日志
  • 清理 storage/logs

三、Laravel 自身问题

7. 开启了 DEBUG 模式

.env:

APP_DEBUG=true

❌ 生产环境必须:

APP_DEBUG=false

8. 大量查询 / N+1 问题

php artisan route:list

用:

with()
load()

9. 使用 SQLite / 本地 MySQL 慢

  • SQLite 不适合并发
  • MySQL 未优化

✅ 建议:

  • 使用 Redis 缓存
  • 配置 MySQL 索引

四、PHP-FPM 配置问题

10. PHP-FPM 进程太少

ps aux | grep php-fpm

www.conf:

pm = dynamic
pm.max_children = 50
pm.start_servers = 10

五、快速自检清单 ✅

php -m | grep opcache
php artisan config:cache
getenforce
iostat -x 1
php artisan route:list

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

你可以贴出:

  1. CentOS 版本
  2. PHP 版本
  3. Web 服务(Nginx / Apache)
  4. 慢的页面(首页?API?后台?)
  5. top / htop 截图

我可以直接告诉你是哪一块拖慢的。

0 踩