温馨提示×

ubuntu thinkphp如何提升性能

小樊
41
2026-10-04 14:26:51
栏目: 编程语言

在 Ubuntu + ThinkPHP 环境下提升性能,可以从 系统层、PHP 层、ThinkPHP 层、缓存与数据库、架构层 多个维度优化。下面按实用程度整理一份清单。


一、Ubuntu 系统层面优化

1. 使用高性能 Web 服务器

  • Nginx + PHP-FPM(推荐)
sudo apt install nginx php-fpm
  • 避免 Apache + mod_php(性能较低)

2. 调整 Linux 文件描述符

ulimit -n 65535

并修改:

/etc/security/limits.conf
* soft nofile 65535
* hard nofile 65535

二、PHP 性能优化(非常关键)

1. 安装并开启 OPcache

sudo apt install php-opcache

/etc/php/8.x/fpm/php.ini

opcache.enable=1
opcache.memory_consumption=128
opcache.max_accelerated_files=10000
opcache.revalidate_freq=60
opcache.validate_timestamps=0  ; 生产环境

生产环境 validate_timestamps=0,改代码后重启 PHP-FPM

2. 使用 PHP 8.x(强烈推荐)

php -v

ThinkPHP 6 / 8 在 PHP 8 下性能提升明显

3. PHP-FPM 进程优化

/etc/php/8.x/fpm/pool.d/www.conf

pm = dynamic
pm.max_children = 100
pm.start_servers = 20
pm.min_spare_servers = 10
pm.max_spare_servers = 30

三、ThinkPHP 自身优化

1. 开启生产模式

.env

APP_DEBUG = false

2. 路由缓存

php think optimize:route

3. 配置缓存

php think optimize:config

4. 类库映射(ThinkPHP 6)

composer dump-autoload -o

5. 关闭不必要的中间件

  • 删除开发用中间件
  • 精简全局中间件

四、缓存策略(性能提升最大)

1. 使用 Redis 缓存

sudo apt install redis-server

ThinkPHP 配置:

'cache' => [
    'default' => 'redis',
    'stores' => [
        'redis' => [
            'type' => 'redis',
            'host' => '127.0.0.1',
        ]
    ]
]

✅ 缓存:

  • 配置
  • 数据库查询结果
  • 页面片段

五、数据库优化

1. 开启 SQL 日志分析

// 开发环境
'type' => 'mysql',
'debug' => true

2. 添加索引

ALTER TABLE user ADD INDEX (username);

3. 使用连接池(Swoole)

(见下文)

4. 避免 N+1 查询

User::with('profile')->select();

六、静态资源优化

  • 使用 Nginx 直接处理静态文件
  • 开启 Gzip
gzip on;
gzip_types text/css application/javascript;

七、进阶:ThinkPHP + Swoole(性能飞跃)

1. 安装 Swoole

pecl install swoole

2. ThinkPHP 使用 Swoole

composer require topthink/think-swoole
php think swoole

✅ 优势:

  • 常驻内存
  • 无 PHP-FPM 开销
  • QPS 提升 5~10 倍

八、简单性能检查清单

✅ APP_DEBUG = false
✅ OPcache 开启
✅ Redis 缓存
✅ 路由 & 配置缓存
✅ 数据库索引
✅ PHP 8.x
✅ Nginx + PHP-FPM


如果你愿意,可以告诉我:

  • ThinkPHP 版本(5.1 / 6 / 8)
  • 是否高并发(API / 商城 / 后台)
  • 当前 QPS 或响应时间

我可以给你 针对性优化方案或压测建议。

0 踩