matrix-synapse 实例如果运行时间长了,可以使用 synapse_auto_compressor 对消息进行整合压缩,以节省磁盘占用同时提高性能。


步骤一:安装 rust 编译环境

按照 rust 官网的安装说明 在运行 matrix-synapse 那台主机上安装 rust 编译环境。

为了避免 glibc 版本不一致造成的运行故障,除非你本地机器与服务器机器系统版本完全一致,否则不建议本地编译。

步骤二:编译 synapse_auto_compressor

git clone https://github.com/matrix-org/rust-synapse-compress-state.git
cd rust-synapse-compress-state/synapse_auto_compressor
cargo build

步骤三:运行 synapse_auto_compressor

运行命令前,最好关闭 matrix-synapse 服务。

cd ../target/debug/
./synapse_auto_compressor -p postgresql://synapse_user:password@localhost/synapse -c 1000 -n 10000000

步骤四:运行 VACUUM 命令

运行 VACUUM 命定释放磁盘空间,为达最佳效果可加 --full 参数,不过 --full 参数需锁表,因此需关闭相关服务。

vacuumdb -h localhost -U synapse_user -W -d synapse -f

运行效果:

Finished running compressor. Saved 24709688 rows.

磁盘空间:

  • 运行前

/dev/sdb        118G   65G   48G  58% /mnt/volume
  • 运行后

/dev/sdb        118G   56G   56G  50% /mnt/volume