在 Debian 上跑 Laravel 感觉“慢”,通常可以从系统环境、PHP 配置、Laravel 自身、运维方式几个层面来排查和优化。下面按常见原因给你一个系统性的解决方案。
先区分是:
可以用:
time php artisan --version
curl -w "@curl-format.txt" -o /dev/null -s http://your-site
curl-format.txt:
time_namelookup: %{time_namelookup}\n
time_connect: %{time_connect}\n
time_pretransfer: %{time_pretransfer}\n
time_starttransfer: %{time_starttransfer}\n
time_total: %{time_total}\n
apt install php-fpm
Nginx 示例:
location ~ \.php$ {
fastcgi_pass unix:/run/php/php8.2-fpm.sock;
}
apt install php-opcache
/etc/php/8.2/fpm/php.ini:
opcache.enable=1
opcache.memory_consumption=256
opcache.max_accelerated_files=10000
opcache.revalidate_freq=60
opcache.validate_timestamps=0
生产环境建议
validate_timestamps=0
php artisan config:cache
php artisan route:cache
php artisan view:cache
.env
APP_DEBUG=false
APP_ENV=production
避免默认 array 缓存:
CACHE_DRIVER=redis
SESSION_DRIVER=redis
QUEUE_CONNECTION=redis
composer install --no-dev --optimize-autoloader
composer dump-autoload -o
如果是 低配 VPS / 云盘 IO 差:
查看 IO:
iostat -x 1
错误权限会导致 Laravel 反复写 log / cache:
chown -R www-data:www-data storage bootstrap/cache
chmod -R 775 storage
fastcgi_buffers 16 16k;
fastcgi_buffer_size 32k;
keepalive_timeout 30;
gzip on;
gzip_types text/css application/javascript application/json;
| 现象 | 可能原因 |
|---|---|
| 首次慢,后面快 | OPcache 未开 |
| artisan 慢 | 每次重新加载全部类 |
| API 慢 | DB 慢 / N+1 |
| 后台任务慢 | 队列没起 |
| SSH 执行慢 | DNS 解析慢 |
如果你愿意,可以告诉我:
我可以直接给你一份针对你环境的优化清单。