在 Ubuntu 上 PHP 运行缓慢,通常不是单一原因,而是环境配置、代码、系统资源或外部依赖共同作用的结果。下面按最常见 → 较少见帮你系统排查。
不同模式性能差异巨大:
| 模式 | 性能 | 说明 |
|---|---|---|
mod_php |
中 | Apache 内置,已不推荐 |
php-fpm + Nginx |
✅ 最佳 | 生产环境首选 |
CGI |
❌ 极慢 | 每次请求都启动进程 |
✅ 推荐:
php-fpm (Nginx / Apache)
检查:
php -v
ps aux | grep php-fpm
未开启 OPcache,PHP 每次都重新编译脚本
开启方法:
sudo apt install php-opcache
编辑:
/etc/php/*/fpm/php.ini
确保:
opcache.enable=1
opcache.memory_consumption=128
opcache.revalidate_freq=60
重启:
sudo systemctl restart php-fpm
✅ 开启后通常 速度提升 2–10 倍
PHP 中常见:
gethostbyname()mail()curl 访问域名Ubuntu 默认可能使用 systemd-resolved,很慢。
✅ 解决:
sudo nano /etc/resolv.conf
改为:
nameserver 8.8.8.8
nameserver 1.1.1.1
用:
EXPLAIN SELECT ...
常见问题:
✅ 解决:
例如:
scandir() 大目录✅ 使用:
xdebug(开发误开)zend_extension=xdebug
⚠️ 生产环境必须关闭
检查:
php -m | grep xdebug
htop
free -h
PHP-FPM 配置过小:
/etc/php/*/fpm/pool.d/www.conf
示例:
pm = dynamic
pm.max_children = 50
pm.start_servers = 10
iostat -x 1
✅ 解决:
timeout✅ 设置:
curl_setopt($ch, CURLOPT_TIMEOUT, 3);
php -m | grep opcache
php -m | grep xdebug
ps aux | grep php-fpm
htop
df -h
cat /etc/resolv.conf
你可以告诉我:
我可以直接给你最优配置方案。