在 Ubuntu 上 ThinkPHP 访问慢,通常不是单一原因,而是环境、框架配置和代码共同作用的结果。下面按最常见 → 较常见 → 排查方法给你系统梳理。
ThinkPHP 是 PHP 框架,没开 OPCache 会非常慢。
检查:
php -m | grep opcache
如果没有:
sudo apt install php-opcache
sudo systemctl restart php-fpm # 或 apache2
php.ini 建议:
opcache.enable=1
opcache.memory_consumption=128
opcache.revalidate_freq=60
✅ 这是最重要的一步
ThinkPHP 默认调试模式很慢。
检查 .env:
APP_DEBUG = false
或 config/app.php:
'app_debug' => false,
✅ 生产环境必须关
每次请求都扫描路由文件会很慢。
php think route:cache
清除:
php think route:clear
php think config:cache
PHP 或 MySQL 在连接时会做 反向 DNS 解析。
解决方式:
/etc/mysql/my.cnf 或 mysqld.cnf:
[mysqld]
skip-name-resolve
gethostbyaddr在 php.ini:
disable_functions = gethostbyaddr
MySQL 配置:
DB_HOST=127.0.0.1
❌ localhost 可能走 socket 或 DNS,慢
/etc/php/*/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
重启:
sudo systemctl restart php-fpm
✅ 必须异步(队列)
config/log.php
'level' => ['error', 'sql'],
不要记录所有 debug 日志。
# 1. OPCache 是否开启
php -m | grep opcache
# 2. 调试是否关闭
grep APP_DEBUG .env
# 3. 路由缓存
php think route:cache
# 4. 配置缓存
php think config:cache
# 5. 数据库 host
grep DB_HOST .env
你可以补充:
我可以直接给你一份最优配置模板。