本文是对上一篇文章的延伸,对当时的分析做出有数据支撑的判断https://blog.csdn.net/Gents_hu/article/details/157733233https://blog.csdn.net/Gents_hu/article/details/157733233

rsync + SSH 串行归档的性能上限复现与证据分析

结论先行

在 PostgreSQL 使用 archive_command = 'rsync -a %p user@archive_host:/path/%f' 的串行归档模型下,即使网络与磁盘性能完全正常,整体归档吞吐仍然会被

SSH 会话建立的固定成本


一、问题背景

生产环境使用如下归档模型(已脱敏):

archive_command = 'rsync -a %p postgres@<ARCHIVE_HOST>:/<ARCHIVE_PATH>/%f'

该模型特征:

  • 每个 WAL 段 独立触发一次 rsync
  • rsync 通过 SSH 建立连接
  • archive_command 串行执行
  • 无连接复用、无并行

事故现象:

  • WAL 持续堆积
  • 网络带宽未打满
  • 磁盘 IO 未长期 100%
  • CPU 使用率正常

二、实验环境(脱敏)

角色 标识
发送端 Host A
接收端 Host B
  • OS:Linux
  • 用户:postgres
  • SSH:免密登录
  • 网络:同区域直连
  • 执行方式:单线程串行

三、测试数据规模(与生产一致)

单文件大小:16 MiB
文件数量:960
总数据量:15 GiB(15360 MiB)

文件名连续编号,模拟 WAL 段行为。


四、前置实验:单次 SSH 会话固定成本

测试命令(Host A)

sudo -u postgres ssh -o BatchMode=yes postgres@<HOST_B> "true"

连续执行 50 次并统计耗时:

for i in {1..50}; do
  /usr/bin/time -f "%e" \\
    ssh -o BatchMode=yes \\
        -o Compression=no \\
        -o ControlMaster=no \\
        -o ControlPath=none \\
        -o ControlPersist=no \\
        postgres@<HOST_B> true \\
    2>&1 >/dev/null
done | tee /tmp/ssh_connect_cost.log

统计结果:

awk '
{ sum+=$1; cnt++; arr[cnt]=$1 }
END{
  asort(arr);
  printf "count=%d avg=%.3f p95=%.3f\\n", cnt, sum/cnt, arr[int(cnt*0.95)]
}' /tmp/ssh_connect_cost.log

输出(实测):

count=50 avg=0.204 p95=0.230

结论:

单次 SSH 新建连接的固定成本约为 0.2 秒


五、生成测试数据(15 GiB / 960 文件)

执行命令(Host A)

sudo -u postgres -i bash <<'EOF'
BASE=/tmp/wal_test
SEG_MB=16
COUNT=960

rm -rf "$BASE"
mkdir -p "$BASE"
cd "$BASE"

for i in $(seq -w 1 "$COUNT"); do
  f="0000000100000000000000${i}"
  fallocate -l ${SEG_MB}M "$f"
done

du -sh "$BASE"
ls -1 | wc -l
EOF

输出(实测):

16G     /tmp/wal_test
960

六、三组对照实验(含原始 shell 记录)

EXP1:每段一次 rsync(无 SSH 复用)

sudo -u postgres ssh postgres@<HOST_B> "rm -rf /archive_test && mkdir -p /archive_test"

sudo -u postgres -i bash <<'EOF'
SRC=/tmp/wal_test
DST="postgres@<HOST_B>:/archive_test/"

start=$(date +%s)
count=0

for f in "$SRC"/*; do
  rsync -a -e "ssh -o BatchMode=yes -o Compression=no" "$f" "$DST" >/dev/null
  count=$((count+1))
done

end=$(date +%s)
elapsed=$((end-start))

echo "files=$count elapsed=${elapsed}s"
EOF

输出(实测):

files=960 elapsed=327s

流量监控部分截取

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
          14.65    0.00   16.16    4.55    0.00   64.65

Device            r/s     rkB/s   rrqm/s  %rrqm r_await rareq-sz     w/s     wkB/s   wrqm/s  %wrqm w_await wareq-sz     d/s     dkB/s   drqm/s  %drqm d_await dareq-sz     f/s f_await  aqu-sz  %util
nvme0n1          0.00      0.00     0.00   0.00    0.00     0.00  199.00  49217.50     0.00   0.00    2.94   247.32    0.00      0.00     0.00   0.00    0.00     0.00    0.00    0.00    0.59  11.00

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           8.76    0.00   12.89    5.15    0.52   72.68

Device            r/s     rkB/s   rrqm/s  %rrqm r_await rareq-sz     w/s     wkB/s   wrqm/s  %wrqm w_await wareq-sz     d/s     dkB/s   drqm/s  %drqm d_await dareq-sz     f/s f_await  aqu-sz  %util
nvme0n1          0.00      0.00     0.00   0.00    0.00     0.00  195.00  49182.50     0.00   0.00    3.02   252.22    0.00      0.00     0.00   0.00    0.00     0.00    0.00    0.00    0.59  10.00

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           8.81    0.00   15.03    4.15    0.52   71.50

Device            r/s     rkB/s   rrqm/s  %rrqm r_await rareq-sz     w/s     wkB/s   wrqm/s  %wrqm w_await wareq-sz     d/s     dkB/s   drqm/s  %drqm d_await dareq-sz     f/s f_await  aqu-sz  %util
nvme0n1          0.00      0.00     0.00   0.00    0.00     0.00  196.00  49183.00     0.00   0.00    3.01   250.93    0.00      0.00     0.00   0.00    0.00     0.00    0.00    0.00    0.59   9.00

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
          16.26    0.00   15.27    2.96    0.00   65.52

Device            r/s     rkB/s   rrqm/s  %rrqm r_await rareq-sz     w/s     wkB/s   wrqm/s  %wrqm w_await wareq-sz     d/s     dkB/s   drqm/s  %drqm d_await dareq-sz     f/s f_await  aqu-sz  %util
nvme0n1          0.00      0.00     0.00   0.00    0.00     0.00  198.00  49213.00     0.00   0.00    2.99   248.55    0.00      0.00     0.00   0.00    0.00     0.00    0.00    0.00    0.59   9.00

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
          18.81    0.00   12.87    3.96    0.00   64.36

Device            r/s     rkB/s   rrqm/s  %rrqm r_await rareq-sz     w/s     wkB/s   wrqm/s  %wrqm w_await wareq-sz     d/s     dkB/s   drqm/s  %drqm d_await dareq-sz     f/s f_await  aqu-sz  %util
nvme0n1          0.00      0.00     0.00   0.00    0.00     0.00  199.00  49215.00     2.00   1.00    2.98   247.31    0.00      0.00     0.00   0.00    0.00     0.00    0.00    0.00    0.59   9.00

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
          16.06    0.00   11.40    3.11    0.00   69.43

Device            r/s     rkB/s   rrqm/s  %rrqm r_await rareq-sz     w/s     wkB/s   wrqm/s  %wrqm w_await wareq-sz     d/s     dkB/s   drqm/s  %drqm d_await dareq-sz     f/s f_await  aqu-sz  %util
nvme0n1          0.00      0.00     0.00   0.00    0.00     0.00  200.00  49214.50     0.00   0.00    2.97   246.07    0.00      0.00     0.00   0.00    0.00     0.00    0.00    0.00    0.59   9.00

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
          15.10    0.00   12.50    3.12    0.00   69.27

Device            r/s     rkB/s   rrqm/s  %rrqm r_await rareq-sz     w/s     wkB/s   wrqm/s  %wrqm w_await wareq-sz     d/s     dkB/s   drqm/s  %drqm d_await dareq-sz     f/s f_await  aqu-sz  %util
nvme0n1          0.00      0.00     0.00   0.00    0.00     0.00  197.00  49183.00     0.00   0.00    4.03   249.66    0.00      0.00     0.00   0.00    0.00     0.00    0.00    0.00    0.79  13.00

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
          18.97    0.00    9.74    2.05    0.00   69.23

Device            r/s     rkB/s   rrqm/s  %rrqm r_await rareq-sz     w/s     wkB/s   wrqm/s  %wrqm w_await wareq-sz     d/s     dkB/s   drqm/s  %drqm d_await dareq-sz     f/s f_await  aqu-sz  %util
nvme0n1          0.00      0.00     0.00   0.00    0.00     0.00  135.00  32834.00     0.00   0.00    3.71   243.21    0.00      0.00     0.00   0.00    0.00     0.00    0.00    0.00    0.50   8.00

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
          12.95    0.00   16.58    3.11    0.00   67.36

Device            r/s     rkB/s   rrqm/s  %rrqm r_await rareq-sz     w/s     wkB/s   wrqm/s  %wrqm w_await wareq-sz     d/s     dkB/s   drqm/s  %drqm d_await dareq-sz     f/s f_await  aqu-sz  %util
nvme0n1          0.00      0.00     0.00   0.00    0.00     0.00  535.00  52323.50     7.00   1.29    1.67    97.80    0.00      0.00     0.00   0.00    0.00     0.00    0.00    0.00    0.89  16.00

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
          16.67    0.00   14.65    0.51    0.00   68.18

Device            r/s     rkB/s   rrqm/s  %rrqm r_await rareq-sz     w/s     wkB/s   wrqm/s  %wrqm w_await wareq-sz     d/s     dkB/s   drqm/s  %drqm d_await dareq-sz     f/s f_await  aqu-sz  %util
nvme0n1          0.00      0.00     0.00   0.00    0.00     0.00  201.00  49249.00     2.00   0.99    1.53   245.02    0.00      0.00     0.00   0.00    0.00     0.00    0.00    0.00    0.31   4.00

EXP2:每段一次 rsync(启用 SSH 连接复用)

sudo -u postgres -i bash <<'EOF'
SRC=/tmp/wal_test
DST="postgres@<HOST_B>:/archive_test/"
SOCK=/tmp/ssh_mux_demo

ssh -MNf -o ControlMaster=yes -o ControlPersist=300 -o ControlPath=$SOCK postgres@<HOST_B>

start=$(date +%s)
count=0

for f in "$SRC"/*; do
  rsync -a -e "ssh -o ControlMaster=auto -o ControlPath=$SOCK" "$f" "$DST" >/dev/null
  count=$((count+1))
done

end=$(date +%s)
elapsed=$((end-start))

ssh -O exit -o ControlPath=$SOCK postgres@<HOST_B>

echo "files=$count elapsed=${elapsed}s"
EOF

输出(实测):

files=960 elapsed=131s

流量监控部分截取

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
          19.31    0.00   11.88    0.00    0.00   68.81

Device            r/s     rkB/s   rrqm/s  %rrqm r_await rareq-sz     w/s     wkB/s   wrqm/s  %wrqm w_await wareq-sz     d/s     dkB/s   drqm/s  %drqm d_await dareq-sz     f/s f_await  aqu-sz  %util
nvme0n1          0.00      0.00     0.00   0.00    0.00     0.00    3.00     33.00     0.00   0.00    1.00    11.00    0.00      0.00     0.00   0.00    0.00     0.00    0.00    0.00    0.00   0.00

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
          16.75    0.00    9.42    0.00    0.00   73.82

Device            r/s     rkB/s   rrqm/s  %rrqm r_await rareq-sz     w/s     wkB/s   wrqm/s  %wrqm w_await wareq-sz     d/s     dkB/s   drqm/s  %drqm d_await dareq-sz     f/s f_await  aqu-sz  %util
nvme0n1          0.00      0.00     0.00   0.00    0.00     0.00    6.00     70.00     0.00   0.00    1.00    11.67    0.00      0.00     0.00   0.00    0.00     0.00    0.00    0.00    0.01   1.00

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
          17.53    0.00   12.37    9.79    0.00   60.31

Device            r/s     rkB/s   rrqm/s  %rrqm r_await rareq-sz     w/s     wkB/s   wrqm/s  %wrqm w_await wareq-sz     d/s     dkB/s   drqm/s  %drqm d_await dareq-sz     f/s f_await  aqu-sz  %util
nvme0n1          0.00      0.00     0.00   0.00    0.00     0.00  597.00 134813.00     3.00   0.50    2.82   225.82    0.00      0.00     0.00   0.00    0.00     0.00    0.00    0.00    1.68  19.00

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
          13.27    0.00   17.35   33.67    0.00   35.71

Device            r/s     rkB/s   rrqm/s  %rrqm r_await rareq-sz     w/s     wkB/s   wrqm/s  %wrqm w_await wareq-sz     d/s     dkB/s   drqm/s  %drqm d_await dareq-sz     f/s f_await  aqu-sz  %util
nvme0n1          0.00      0.00     0.00   0.00    0.00     0.00  624.00  80471.50     1.00   0.16    9.12   128.96    0.00      0.00     0.00   0.00    0.00     0.00    0.00    0.00    5.69  49.00

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
          15.90    0.00   13.85    5.13    0.00   65.13

Device            r/s     rkB/s   rrqm/s  %rrqm r_await rareq-sz     w/s     wkB/s   wrqm/s  %wrqm w_await wareq-sz     d/s     dkB/s   drqm/s  %drqm d_await dareq-sz     f/s f_await  aqu-sz  %util
nvme0n1          0.00      0.00     0.00   0.00    0.00     0.00  712.00  99828.00     5.00   0.70    2.15   140.21    0.00      0.00     0.00   0.00    0.00     0.00    0.00    0.00    1.53  14.00

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
          16.58    0.00   14.07    0.00    0.00   69.35

Device            r/s     rkB/s   rrqm/s  %rrqm r_await rareq-sz     w/s     wkB/s   wrqm/s  %wrqm w_await wareq-sz     d/s     dkB/s   drqm/s  %drqm d_await dareq-sz     f/s f_await  aqu-sz  %util
nvme0n1          0.00      0.00     0.00   0.00    0.00     0.00    6.00     67.00     0.00   0.00    0.50    11.17    0.00      0.00     0.00   0.00    0.00     0.00    0.00    0.00    0.00   0.00

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
          14.07    0.00   17.09    6.53    0.00   62.31

Device            r/s     rkB/s   rrqm/s  %rrqm r_await rareq-sz     w/s     wkB/s   wrqm/s  %wrqm w_await wareq-sz     d/s     dkB/s   drqm/s  %drqm d_await dareq-sz     f/s f_await  aqu-sz  %util
nvme0n1          0.00      0.00     0.00   0.00    0.00     0.00  491.00  66654.00     5.00   1.01    1.91   135.75    0.00      0.00     0.00   0.00    0.00     0.00    0.00    0.00    0.94   8.00

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
          16.50    0.00   14.00    0.00    0.00   69.50

Device            r/s     rkB/s   rrqm/s  %rrqm r_await rareq-sz     w/s     wkB/s   wrqm/s  %wrqm w_await wareq-sz     d/s     dkB/s   drqm/s  %drqm d_await dareq-sz     f/s f_await  aqu-sz  %util
nvme0n1          0.00      0.00     0.00   0.00    0.00     0.00    6.00     73.00     0.00   0.00    1.00    12.17    0.00      0.00     0.00   0.00    0.00     0.00    0.00    0.00    0.01   0.00

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
          15.62    0.00   14.06    9.90    0.00   60.42

Device            r/s     rkB/s   rrqm/s  %rrqm r_await rareq-sz     w/s     wkB/s   wrqm/s  %wrqm w_await wareq-sz     d/s     dkB/s   drqm/s  %drqm d_await dareq-sz     f/s f_await  aqu-sz  %util
nvme0n1          0.00      0.00     0.00   0.00    0.00     0.00  649.00  99567.00     3.00   0.46    2.46   153.42    0.00      0.00     0.00   0.00    0.00     0.00    0.00    0.00    1.60  16.00

EXP3:单次 rsync 整个目录

sudo -u postgres -i bash <<'EOF'
SRC=/tmp/wal_test/
DST="postgres@<HOST_B>:/archive_test/"

start=$(date +%s)
rsync -a --info=progress2 -e "ssh -o BatchMode=yes" "$SRC" "$DST"
end=$(date +%s)

elapsed=$((end-start))
echo "elapsed=${elapsed}s"
EOF

输出(实测):

elapsed=116s

流量监控部分截取

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
          26.64    0.00   28.04   24.77    0.00   20.56

Device            r/s     rkB/s   rrqm/s  %rrqm r_await rareq-sz     w/s     wkB/s   wrqm/s  %wrqm w_await wareq-sz     d/s     dkB/s   drqm/s  %drqm d_await dareq-sz     f/s f_await  aqu-sz  %util
nvme0n1          0.00      0.00     0.00   0.00    0.00     0.00  503.00 128042.00     0.00   0.00   11.92   254.56    0.00      0.00     0.00   0.00    0.00     0.00    0.00    0.00    6.00  99.00

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
          22.77    0.00   31.19   25.74    0.00   20.30

Device            r/s     rkB/s   rrqm/s  %rrqm r_await rareq-sz     w/s     wkB/s   wrqm/s  %wrqm w_await wareq-sz     d/s     dkB/s   drqm/s  %drqm d_await dareq-sz     f/s f_await  aqu-sz  %util
nvme0n1          0.00      0.00     0.00   0.00    0.00     0.00  504.00 128301.00     0.00   0.00   11.89   254.57    0.00      0.00     0.00   0.00    0.00     0.00    0.00    0.00    5.99  98.00

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
          25.00    0.00   28.06   11.22    0.00   35.71

Device            r/s     rkB/s   rrqm/s  %rrqm r_await rareq-sz     w/s     wkB/s   wrqm/s  %wrqm w_await wareq-sz     d/s     dkB/s   drqm/s  %drqm d_await dareq-sz     f/s f_await  aqu-sz  %util
nvme0n1          0.00      0.00     0.00   0.00    0.00     0.00  241.00  61696.00     0.00   0.00   11.96   256.00    0.00      0.00     0.00   0.00    0.00     0.00    0.00    0.00    2.88  47.00

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
          25.35    0.00   30.05    3.29    0.00   41.31

Device            r/s     rkB/s   rrqm/s  %rrqm r_await rareq-sz     w/s     wkB/s   wrqm/s  %wrqm w_await wareq-sz     d/s     dkB/s   drqm/s  %drqm d_await dareq-sz     f/s f_await  aqu-sz  %util
nvme0n1          0.00      0.00     0.00   0.00    0.00     0.00  259.00  65583.50     0.00   0.00    3.02   253.22    0.00      0.00     0.00   0.00    0.00     0.00    0.00    0.00    0.78  14.00

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
          30.20    0.00   27.23    9.90    0.00   32.67

Device            r/s     rkB/s   rrqm/s  %rrqm r_await rareq-sz     w/s     wkB/s   wrqm/s  %wrqm w_await wareq-sz     d/s     dkB/s   drqm/s  %drqm d_await dareq-sz     f/s f_await  aqu-sz  %util
nvme0n1          0.00      0.00     0.00   0.00    0.00     0.00  893.00 227364.00     0.00   0.00    3.22   254.61    0.00      0.00     0.00   0.00    0.00     0.00    0.00    0.00    2.87  48.00

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
          34.13    0.00   22.12   22.60    0.00   21.15

Device            r/s     rkB/s   rrqm/s  %rrqm r_await rareq-sz     w/s     wkB/s   wrqm/s  %wrqm w_await wareq-sz     d/s     dkB/s   drqm/s  %drqm d_await dareq-sz     f/s f_await  aqu-sz  %util
nvme0n1          0.00      0.00     0.00   0.00    0.00     0.00  505.00 128301.00     0.00   0.00   11.88   254.06    0.00      0.00     0.00   0.00    0.00     0.00    0.00    0.00    6.00  95.00

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
          26.70    0.00   27.18   24.76    0.49   20.87

Device            r/s     rkB/s   rrqm/s  %rrqm r_await rareq-sz     w/s     wkB/s   wrqm/s  %wrqm w_await wareq-sz     d/s     dkB/s   drqm/s  %drqm d_await dareq-sz     f/s f_await  aqu-sz  %util
nvme0n1          0.00      0.00     0.00   0.00    0.00     0.00  503.00 128272.00     0.00   0.00   11.93   255.01    0.00      0.00     0.00   0.00    0.00     0.00    0.00    0.00    6.00  99.00

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
          29.27    0.00   28.29   22.93    0.00   19.51

Device            r/s     rkB/s   rrqm/s  %rrqm r_await rareq-sz     w/s     wkB/s   wrqm/s  %wrqm w_await wareq-sz     d/s     dkB/s   drqm/s  %drqm d_await dareq-sz     f/s f_await  aqu-sz  %util
nvme0n1          0.00      0.00     0.00   0.00    0.00     0.00  502.00 128024.00     0.00   0.00   11.89   255.03    0.00      0.00     0.00   0.00    0.00     0.00    0.00    0.00    5.97  98.00

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
          30.15    0.00   22.11   11.06    0.00   36.68

Device            r/s     rkB/s   rrqm/s  %rrqm r_await rareq-sz     w/s     wkB/s   wrqm/s  %wrqm w_await wareq-sz     d/s     dkB/s   drqm/s  %drqm d_await dareq-sz     f/s f_await  aqu-sz  %util
nvme0n1          0.00      0.00     0.00   0.00    0.00     0.00  237.00  59949.00     0.00   0.00   11.89   252.95    0.00      0.00     0.00   0.00    0.00     0.00    0.00    0.00    2.82  46.00

七、真实测试结果汇总(来自本次实验)

吞吐统一使用

Mbps

换算关系:1 MiB/s ≈ 8.39 Mbps

实验 模型 文件数 SSH 会话数 总耗时 (s) 吞吐(Mbps,计算) 网络接收速率(Mbps,sar) 主要瓶颈
EXP1 每文件一次 rsync(无复用) 960 960 327 ≈ 394 Mbps ≈ 390–420 Mbps SSH 新建连接固定成本
EXP2 每文件一次 rsync(SSH 复用) 960 ~1 131 ≈ 984 Mbps ≈ 950–1,050 Mbps rsync/协议 + 传输
EXP3 单次 rsync 整个目录 960 1 116 ≈ 1,112 Mbps ≈ 1,200–1,350 Mbps 归档端磁盘写入

所有数值均来自本次实测,不是理论估算。


八、证据链闭环分析

1️⃣ 连接成本 = 性能损失(EXP1 vs EXP2)

  • 单次 SSH 新建连接成本:0.204 s
  • 文件数:960

理论连接成本:

0.204 × 960 ≈ 195.8 s

实测差值:

EXP1 − EXP2 = 327 − 131 = 196 s

理论值与实测值几乎完全一致

⇒ EXP1 中约

60% 的时间浪费在 SSH 建连上

生产环境的流量


2️⃣ 网络不是瓶颈(sar 证据)

  • EXP1:≈ 400 Mbps
  • EXP2:≈ 1 Gbps
  • EXP3:≈ 1.3 Gbps
  • 网卡利用率始终未接近上限

网络带宽充足,吞吐稳定

⇒ 排除网络瓶颈


3️⃣ 瓶颈迁移路径非常清晰

  • EXP1:SSH 会话建立(模型级瓶颈)
  • EXP2:rsync/协议 + 单流传输
  • EXP3:归档端磁盘写入(%util≈100%,iowait 明显)

九、为什么生产中“看起来都正常,但 WAL 仍然堆积”

完成一次ssh连接大约0.22s,传输一个16MB文件大约0.11s,加起来是0.33s。简单计算下,16/0.33= 48,每秒钟是48MB的数据,换算成mbps,就是478=376 mbps*

在生产模型(EXP1)下:

  • 实测归档能力上限 ≈ 47 MiB/s(≈ 394 Mbps)
  • archive_command 串行执行
  • 无并行、无连接复用

只要 WAL 产生速率持续高于该上限,就会出现:

  • WAL backlog 持续增长
  • 网络与磁盘监控“看起来没满”
  • 实际系统已进入“归档能力不足”状态

十、结论

本文通过三组真实可复现实验,证明 PostgreSQL 使用 rsync + SSH 串行归档时,其性能上限由

SSH 会话建立的固定成本


Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐