作业运行时IOSTAT命令输出:

作业运行时IOSTAT命令输出:

我们有一台配备 8 核 CPU 和 32 GB RAM 的服务器。大约有 1200 名活跃用户。我们使用 GitLab rake 任务进行备份。

sudo gitlab-rake gitlab:backup:create

此过程大约需要 80 分钟,在此期间 GitLab 间歇性无法使用,因为 CPU 和 RAM 已完全占满。参见下图。

平均负载为 40,RAM 消耗为 100%。

在此处输入图片描述

tar创建最终文件时,CPU/RAM 已完全消耗。我们的备份大小每天都在增加。有没有办法优化这项工作的性能?最终的 tar 大小为 17496780800 字节(17.5GB)。

作业运行时IOSTAT命令输出:

Linux 3.10.0-957.10.1.el7.x86_64 (abcdefghi)  02/07/19        _x86_64_        (8 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           5.01    0.00    2.05    3.14    0.00   89.80
Device:         rrqm/s   wrqm/s     r/s     w/s    rMB/s    wMB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util
fd0               0.00     0.00    0.00    0.00     0.00     0.00     8.00     0.00   42.20   42.20    0.00  42.20   0.00
sda               0.04     0.27    1.88   26.14     0.10     0.32    30.77     0.24    8.41    4.42    8.70   0.14   0.38
sdc               0.00     0.36    0.28    0.56     0.00     0.03    79.07     0.00    0.72    0.83    0.67   0.43   0.04
sdd               0.01     0.40    2.51    1.19     0.08     0.11   107.56     0.01    2.23    2.85    0.90   0.63   0.23
sdb               0.01     0.49    0.01    0.14     0.00     0.00    38.10     0.00    0.54    0.27    0.57   0.39   0.01
dm-0              0.00     0.00    0.44    0.02     0.03     0.00   122.65     0.00    2.26    2.34    0.45   0.81   0.04
dm-1              0.00     0.00    0.03    0.63     0.00     0.00     8.68     0.00    1.63    0.53    1.68   0.09   0.01
dm-2              0.00     0.00    0.01    0.41     0.00     0.02    85.97     0.00    1.13    0.64    1.15   0.42   0.02
dm-3              0.00     0.00    1.18   24.94     0.07     0.29    28.24     0.23    8.98    6.22    9.11   0.12   0.32
dm-4              0.00     0.00    0.25    0.65     0.01     0.00    26.20     0.00    1.28    1.47    1.21   0.34   0.03
dm-5              0.00     0.00    0.02    0.00     0.00     0.00    34.01     0.00    2.21    1.17  233.00   1.40   0.00
dm-6              0.00     0.00    0.02    0.37     0.00     0.00    15.53     0.00    1.97    4.37    1.87   0.32   0.01

作业运行时交换

在此处输入图片描述

答案1

不清楚您的后端存储是 SATA 还是 SSD 或者其他什么。我建议您迁移到 SSD。我们在 SATA 上运行时也遇到了类似的问题。一旦我们迁移到 SSD,问题就消失了。

答案2

发生这种情况的原因可能是所有正常的 Gitlab 操作都在与备份操作相同的磁盘上进行读写操作。是否可以将备份映像存储在另一个磁盘或 NFS 挂载文件系统上?这至少会将 I/O 移到不同的子系统上。

也许值得尝试STRATEGY=copy备份策略,在运行 tar/gzip 之前,会先将数据复制到另一个位置——特别是 gzip 会占用大量资源。由于速度copy应该相当快,因此 Gitlab 服务器不会受到长时间的影响。

看看您是否可以将标志应用于 Gzip。尝试降低 Gzip 压缩级别 - 这将导致备份文件稍微大一些,但会降低系统负载 - 有时效果显著。

相关内容