Linux - 提取 Tar 会显着降低服务器速度

Linux - 提取 Tar 会显着降低服务器速度

我有一个具有 12 TB 存储空间的 Web 服务器(规格如下)。我正在将打包在 TAR 中的大量 csv 文件移动到服务器,然后在服务器上提取。问题是,当提取 TAR 文件时,服务器变得非常慢,几乎无法使用。我没有做任何疯狂的事情,通常一次运行 2-4 次提取。但即使只运行一两个也会显着降低服务器速度。这对我来说将是一个大问题,因为我将上传和提取 TAR 文件,而人们想要使用该网站,但现在我无法同时完成这两件事。我对 Linux 和这个社区真的很陌生,所以如果我可以提供任何更多有用的信息,请告诉我,我会更新这篇文章。

我猜磁盘是瓶颈?

如果是这样,我可以限制 tar 提取磁盘的使用或优先考虑其他一切吗?

输入/输出统计:

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0.15    0.56    0.40   14.83    0.00   84.06

Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
loop0             0.00         0.00         0.00       1907          2
sda             155.19       787.23      1484.89  604305327 1139862930
sdb             154.49       765.39      1493.48  587544552 1146456242
sdc             153.82       759.91      1485.53  583338594 1140353662
md4            1041.52      1861.40      4425.45 1428880721 3397151904
md3               4.78        46.70        11.08   35850458    8501904
md2               0.00         0.00         0.00       3641         98

顶部:

PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
7194 root      20   0       0      0      0 D   5.0  0.0   0:17.38 
13811 user1  20   0  121272   1620   1464 D   4.3  0.0   0:02.20 tar

服务器规格:

英特尔凌动 C2750,8c/8t - 2.4GHz /2.6GHz,16GB DDR3 ECC 1600 MHz

答案1

ionice命令是“nice用于 IO”并将运行具有不同 IO 优先级的命令,因此它将(或不会)让步给其他想要使用磁盘的进程。

ionice -c 3 tar xf ...

将以“空闲”优先级运行该tar命令,因此它仅在其他人不想使用时才使用该磁盘。这将防止它干扰其他进程。

在这种情况下,并行运行多个提取不会有太大好处。 tar 文件只是串联的数据和一些标头,因此除了读取和写入之外没有什么可做的。它可能如果您使用不同的磁盘或某些 SSD,这会很有用。

相关内容