宝塔面板专属:WordPress Redis 极致性能调优教程

690次阅读
没有评论

共计 3477 个字符,预计需要花费 9 分钟才能阅读完成。

解锁 Igbinary 二进制序列化 + Zstd 顶级压缩

开启 Igbinary + Zstd 的本质,就是用极小的 CPU 成本 换取极大的 内存空间 传输效率

为什么要写这篇教程?

宝塔面板软件商店自带的 PHP-Redis 扩展版本较旧(通常为 5.x),默认 不支持 Zstd 压缩。对于插件多、数据库大的 WordPress 站点,开启 Zstd 可以减少 50%-80% 的内存占用,并显著提升加载速度。

还有 PHP8.5 开始,在官方扩展里面没有 Igbinary,Zstd 这两个扩展。还需要手动添加。为了我自己以后方便,我也需要记录一下。如果你不是 PHP8.5,直接看 第三阶段


第一阶段:组件准备(宝塔面板操作)

首先,我们要安装好基础的“零件”。

  1. 安装 PHP 扩展:在宝塔面板 -> 软件商店 -> PHP 设置 -> 安装扩展中,直接点击安装 igbinaryzstd
  2. 安装系统依赖:进入 SSH 终端,安装 Zstd 开发库,否则后续编译会报错:Bash# Ubuntu/Debian 系统 apt-get install -y libzstd-dev # CentOS 系统 yum install -y libzstd-devel

第二阶段:PHP8.5 手动安装Igbinary + Zstd

因为前文提到 8.5 宝塔面板的安装扩展→安装列表里面没有这 2 个组件,所以我需要手动安装。

安装依赖

apt update
apt install -y build-essential php8.5-dev php-pear git libzstd-dev unzip wget

安装 igbinary 扩展

cd /tmp
git clone https://github.com/igbinary/igbinary.git
cd igbinary
/www/server/php/85/bin/phpize
./configure --with-php-config=/www/server/php/85/bin/php-config
make -j$(nproc) && make install

安装 zstd 扩展

cd /tmp
wget https://github.com/kjdev/php-ext-zstd/archive/refs/heads/master.zip -O php-ext-zstd.zip
unzip php-ext-zstd.zip
cd php-ext-zstd-master
/www/server/php/85/bin/phpize
./configure --with-php-config=/www/server/php/85/bin/php-config
make -j$(nproc) && make install

第三阶段:编译“满血版”PhpRedis 驱动

这是最关键的一步,我们要手动编译 v6.3.0 版本的驱动来替代宝塔自带的驱动。

# 1. 下载并解压最新驱动源码
wget https://pecl.php.net/get/redis-6.3.0.tgz && tar -zxvf redis-6.3.0.tgz && cd redis-6.3.0

# 2. 生成编译配置
/www/server/php/85/bin/phpize

# 3. 关键配置参数:强行开启 igbinary 和 zstd 支持
./configure --with-php-config=/www/server/php/85/bin/php-config --enable-redis-igbinary --enable-redis-zstd

# 4. 编译并安装
make && make install

编译成功后,系统会输出 Installing shared extensions: /www/server/php/85/lib/php/extensions/no-debug-non-zts-xxxx/。记下这个路径。


第四阶段:激活扩展

直接进入 PHP 扩展界面安装 redis 即可,它会自动安装 redis7.4 服务端,如果你想要更加高的版本,你可直接卸载,在应用列表里面安装更新的,比如我安装的是 redis8.4,上一步操作只是安装 PhpRedis6.3.0

  1. 进入 PHP 设置 -> 配置文件,拉到最底部。
  2. 按顺序添加以下代码(注意:igbinary 必须在 redis 之前):
  3. 重启 PHP 服务
  4. 这段代码一般会自动添加不需要手动添加。贴出来只是方便各位检查

代码参考:

extension=igbinary.so
session.serialize_handler=igbinary
extension=zstd.so
[redis]
extension = /www/server/php/85/lib/php/extensions/no-debug-non-zts-20250925/redis.so
宝塔面板专属:WordPress Redis 极致性能调优教程
参考结果

第四阶段:Redis 服务端防爆设置 (redis.conf)

1. 内存与剔除策略 (针对 4GB 内存服务器)

为了确保 1GB 内存能发挥出 4GB 的存储效果,并精准保护热点数据:

  • maxmemory 1073741824:分配 1GB 物理内存(配合 Zstd 压缩,实际承载力极大)。
  • maxmemory-policy volatile-lru:优先剔除设置了过期时间且最少使用的缓存。
  • maxmemory-samples 10:将 LRU 采样数从 5 提升至 10,提高剔除算法的精准度,防止误删热点 Key。

2. 异步清理 (Lazy Freeing) — 消除瞬时卡顿

让 Redis 把“脏活累活”丢给后台线程,主线程只负责读写,彻底解决高并发下的微小延迟:

  • lazyfree-lazy-eviction yes:内存满载剔除时,后台异步释放。
  • lazyfree-lazy-expire yes:缓存到期失效时,后台异步清理。
  • lazyfree-lazy-server-del yes:执行删除 / 覆盖指令时,后台异步处理。
  • replica-lazy-flush yes:从库同步清空数据时,后台异步执行。

3. 持久化调优 (方案 A:保护磁盘 IO)

针对 WordPress 这种缓存变动极快的场景,放宽 RDB 快照频率,并关闭 AOF 以榨取极限速度:

  • save 3600 1:1 小时内有 1 次修改才存盘。
  • save 300 100:5 分钟内有 100 次修改才存盘。
  • save 60 50000:1 分钟内达到 5 万次修改才触发(应对突发海量写入)。
  • appendonly no坚决关闭 AOF,避免每一条写入都刷盘。
  • rdbcompression yes:开启 RDB 压缩(虽然存盘费点 CPU,但极省空间)。

4. 网络与稳定性

  • tcp-keepalive 300:保持连接活跃。
  • stop-writes-on-bgsave-error yes:磁盘存盘失败时停止写入,保护数据一致性。
  • protected-mode yes & bind 127.0.0.1:确保安全,只允许本地 PHP 访问。

第五阶段:WordPress 网站接入 (wp-config.php)

wp-config.php 文件的 /* That's all, stop editing! */ 之前加入指令(Redis Object Cache 插件亲测,别的插件可能调用略有不同):

PHP

// --- Redis 极致调优:性能与稳定性三保险 ---

// 1. 性能:开启最强压缩与序列化
define('WP_REDIS_IGBINARY', true);
define('WP_REDIS_COMPRESSION', 'zstd');
define('WP_REDIS_COMPRESSION_THRESHOLD', 2048); 

// 2. 空间:防止内存堆积 (建议加上,因为插件默认可能不限时间)
define('WP_REDIS_MAXTTL', 86400); // 强制 24 小时过期

// 3. 安全:防止 Redis 故障导致网站打不开
define('WP_REDIS_TIMEOUT', 1);          // 连接超时
define('WP_REDIS_READ_TIMEOUT', 1);     // 读取超时
define('WP_REDIS_GRACEFUL_FAILOVER', true); // Redis 挂了,网站自动降级读数据库

结果验证

宝塔面板专属:WordPress Redis 极致性能调优教程
成功后,你就可以看到你的表格乱码一样

刷新 WordPress 后台的 Redis 诊断页面,看到以下三项即代表大功告成:

  1. Client: PhpRedis (v6.0.2)(版本必须是 6.x,否则不支持 Zstd)
  2. WP_REDIS_IGBINARY: true(二进制序列化已开启)

总结建议

本教程的本质是 **“用新驱动换掉旧马达”**。通过这种方式,你既保留了宝塔管理的便利性,又让 WordPress 获得了目前单机环境下最强的缓存性能。

正文完
 0
李英杰
版权声明:本文于2026-03-12转载自https://gemini.google.com,共计3477字。
转载提示:本文章非本站原创文章,若需转载请联系原作者获得转载授权。
评论(没有评论)
启用通知 启动 拒绝