在 CentOS 上 Laravel 访问慢,通常不是单一原因,而是 环境配置 + Laravel 特性 + 系统资源 联合导致的。下面按 最常见 → 较少见 给你系统排查。
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
很多人在 生产环境直接跑开发配置。
✅ 必须执行:
php artisan config:cache
php artisan route:cache
php artisan view:cache
php artisan optimize
✅ 检查是否处于 debug 模式:
APP_DEBUG=false
APP_ENV=production
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
Laravel + PHP-FPM 对内存较敏感。
✅ 检查:
free -h
✅ 如果没有 swap:
dd if=/dev/zero of=/swapfile bs=1M count=2048
chmod 600 /swapfile
mkswap /swapfile
swapon /swapfile
默认 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
sync 队列 / 日志过大QUEUE_CONNECTION=sync
✅ 生产环境应改为:
QUEUE_CONNECTION=redis
✅ 日志过大也会拖慢:
du -sh storage/logs/
✅ 检查:
TELESCOPE_ENABLED=false
DEBUGBAR_ENABLED=false
✅ 推荐核心配置:
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 路径不对✅ 检查:
dig db_host
ping db_host
✅ 强烈建议:
✅ 执行这些命令:
php -m | grep opcache
free -h
systemctl status php-fpm
getenforce
✅ Laravel 执行:
php artisan optimize
php artisan route:cache
✅ 立刻见效
php artisan optimize如果你愿意,我可以 直接帮你定位:
我可以给你 精确到参数级别 的优化方案。