温馨提示×

CentOS为何Laravel访问慢

小樊
34
2026-08-29 16:23:43
栏目: 智能运维

CentOS 上 Laravel 访问慢,通常不是单一原因,而是 环境配置 + Laravel 特性 + 系统资源 联合导致的。下面按 最常见 → 较少见 给你系统排查。


一、最常见原因(90% 都在这里)

1️⃣ 未关闭/未正确配置 PHP OPcache

Laravel 属于“重框架”,没有 OPcache 会非常慢

✅ 检查:

php -m | grep opcache

✅ 推荐配置(php.ini):

opcache.enable=1
opcache.memory_consumption=256
opcache.interned_strings_buffer=32
opcache.max_accelerated_files=20000
opcache.validate_timestamps=0   # 生产环境
opcache.revalidate_freq=0

重启 PHP:

systemctl restart php-fpm

2️⃣ 未开启 Laravel 生产优化

很多人在 生产环境直接跑开发配置

✅ 必须执行:

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

✅ 检查是否处于 debug 模式:

APP_DEBUG=false
APP_ENV=production

3️⃣ SELinux 导致文件访问慢(CentOS 特有问题)

CentOS 默认开启 SELinux,会明显拖慢 Laravel。

✅ 临时验证:

setenforce 0

如果速度明显变快:

✅ 正确做法(不要永久关闭):

setsebool -P httpd_read_user_content 1
setsebool -P httpd_execmem 1

或修改文件上下文:

semanage fcontext -a -t httpd_sys_rw_content_t "/path/to/project(/.*)?"
restorecon -Rv /path/to/project

4️⃣ swap 没开 / 内存不足

Laravel + PHP-FPM 对内存较敏感。

✅ 检查:

free -h

✅ 如果没有 swap:

dd if=/dev/zero of=/swapfile bs=1M count=2048
chmod 600 /swapfile
mkswap /swapfile
swapon /swapfile

5️⃣ PHP-FPM 配置不合理

默认 PHP-FPM 配置 并发极低

✅ 调整:

vim /etc/php-fpm.d/www.conf

关键参数:

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

重启:

systemctl restart php-fpm

二、Laravel 自身常见问题

6️⃣ 使用了 sync 队列 / 日志过大

QUEUE_CONNECTION=sync

✅ 生产环境应改为:

QUEUE_CONNECTION=redis

✅ 日志过大也会拖慢:

du -sh storage/logs/

7️⃣ 每次请求都打开太多服务( telescope / debugbar )

✅ 检查:

TELESCOPE_ENABLED=false
DEBUGBAR_ENABLED=false

三、Nginx / Apache 问题

8️⃣ Nginx 配置错误

✅ 推荐核心配置:

location ~ \.php$ {
    fastcgi_pass   unix:/run/php-fpm/www.sock;
    fastcgi_index  index.php;
    include        fastcgi_params;
    fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;
}

❌ 常见错误:

  • fastcgi_pass 指向错误
  • root 路径不对
  • 开启了不必要模块

四、数据库层(常被忽略)

9️⃣ 数据库在外网 / DNS 慢

✅ 检查:

dig db_host
ping db_host

✅ 强烈建议:

  • 数据库用 IP
  • 或加本地 hosts

五、快速自检清单(5 分钟定位)

✅ 执行这些命令:

php -m | grep opcache
free -h
systemctl status php-fpm
getenforce

✅ Laravel 执行:

php artisan optimize
php artisan route:cache

六、总结(最优先做这 5 步)

立刻见效

  1. 开启 OPcache
  2. php artisan optimize
  3. 关闭 SELinux 测试
  4. 增加 swap
  5. 调整 PHP-FPM

如果你愿意,我可以 直接帮你定位

  • 告诉我:
    ✅ CentOS 版本
    ✅ PHP 版本
    ✅ Nginx / Apache
    ✅ 单机还是云服务器
    ✅ 访问一个页面需要多少秒

我可以给你 精确到参数级别 的优化方案。

0