在 Ubuntu 下 PHP 运行慢,一般不是单一原因,而是环境、配置、代码、IO、数据库等多个因素叠加。下面按最常见 → 进阶 → 少见的顺序给你一套排查与优化方案。
<?php
phpinfo();
如果这也慢(>1 秒),说明是 PHP 运行环境问题。
检查:
php -i | grep opcache
如果没有开启:
sudo apt install php-opcache
配置(php.ini):
opcache.enable=1
opcache.memory_consumption=128
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=4000
opcache.revalidate_freq=0
✅ 开启后,PHP 性能通常提升 2~5 倍
php-fpm 但配置不合理php -v
路径示例:
/etc/php/8.1/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.max_children太小会严重卡顿
重启:
sudo systemctl restart php8.1-fpm
fastcgi_pass unix:/run/php/php8.1-fpm.sock;
✅ 一定要用 unix socket,不要用 TCP(127.0.0.1:9000)
gethostbyname() 导致卡死(非常隐蔽)现象:
原因:
file_get_contents()
curl
mail()
✅ 解决方法:
; php.ini
disable_functions = getmxrr,gethostbyname
或确保 /etc/resolv.conf 正常
SHOW VARIABLES LIKE 'slow_query_log';
开启慢查询日志:
SET GLOBAL slow_query_log = 'ON';
SET GLOBAL long_query_time = 1;
✅ 90% 的 PHP 慢是 SQL 慢
EXPLAIN SELECT * FROM user WHERE email='xx';
composer dump-autoloadfile_exists() / is_dir() 滥用php -i | grep xdebug
✅ 生产环境一定要关:
sudo phpdismod xdebug
top
htop
free -h
iostat -x 1
如果是云服务器:
php artisan config:cache
php artisan route:cache
php artisan view:cache
✅ 是否开启 OPCache
✅ 是否关闭 Xdebug
✅ PHP-FPM 参数是否合理
✅ 是否使用 Unix Socket
✅ 是否有慢 SQL
✅ 服务器配置是否过低
你可以直接贴出:
我可以给你针对你服务器的一行一行优化方案 ✅