PHP 在 Debian 上运行慢,通常不是单一原因,而是环境、配置、代码或资源多个层面的问题。下面按常见原因 → 排查方法 → 解决方案给你一个系统性的排查清单。
先区分是哪种慢,再对症下药:
| 现象 | 可能原因 |
|---|---|
| 页面首次访问慢 | PHP 冷启动 / OPcache 未开启 |
| 每次都慢 | 代码性能 / 数据库慢 |
| 并发一高就慢 | PHP-FPM 配置不足 |
| 本地快、服务器慢 | 网络 / DNS / 环境差异 |
| 后台任务慢 | CPU / IO / 内存不足 |
PHP 默认不会自动开启 OPcache,会导致每次请求都重新编译 PHP 代码。
php -i | grep opcache
编辑:
/etc/php/8.x/fpm/conf.d/10-opcache.ini
(路径按你的 PHP 版本)
推荐配置:
opcache.enable=1
opcache.memory_consumption=128
opcache.interned_strings_buffer=16
opcache.max_accelerated_files=10000
opcache.validate_timestamps=0 ; 生产环境建议关闭
opcache.revalidate_freq=0
重启:
systemctl restart php8.x-fpm
✅ 效果:通常能提升 2~5 倍性能
Debian 默认 pm = dynamic,但参数偏小。
/etc/php/8.x/fpm/pool.d/www.conf
pm = dynamic
pm.max_children = 50
pm.start_servers = 10
pm.min_spare_servers = 5
pm.max_spare_servers = 20
如果是 高并发站点:
pm = static
pm.max_children = 50
重启:
systemctl restart php8.x-fpm
PHP 本身不慢,SQL 慢才是真凶。
SHOW PROCESSLIST;
开启慢查询:
slow_query_log = 1
slow_query_log_file = /var/log/mysql/slow.log
long_query_time = 1
SELECT *如果你在代码或日志中使用了 域名(如 Redis、MySQL、Mail)
✅ 全部改用 IP
DB_HOST=127.0.0.1
REDIS_HOST=127.0.0.1
或禁用 PHP DNS 超时:
disable_functions = gethostbyname
xdebug 会严重拖慢 PHP。
php -i | grep xdebug
apt remove php-xdebug
systemctl restart php8.x-fpm
✅ 生产环境绝对不要开 xdebug
top
htop
free -h
Debian 默认源可能还是 PHP 7.4。
✅ 至少 PHP 8.1+
apt install software-properties-common
add-apt-repository ppa:ondrej/php
apt update
apt install php8.2-fpm
你可以直接一条条核对:
你可以直接贴出:
top 或 htop 截图我可以给你针对你服务器的精确优化方案(包括参数直接可用)。