我有一个具有 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
该
ionice
命令是“nice
for IO”,将运行具有不同 IO 优先级的命令,因此它将(或不会)让给其他想要使用磁盘的进程。将以“空闲”优先级运行该
tar
命令,因此它仅在其他人不想使用时才使用磁盘。这将防止它干扰其他进程。在这种情况下,并行运行多个提取不会有太多好处。tar 文件只是连接数据和一些头文件,所以除了读写之外没有什么可做的。如果您正在处理不同的磁盘或某些 SSD,它可能会很有用。