这是我在卡住之前的最后一条重要信息:
top - 18:26:10 up 238 days, 5:43, 3 users, load average: 1782.01, 1824.47, 1680.36
Tasks: 1938 total, 1 running, 1937 sleeping, 0 stopped, 0 zombie
Cpu(s): 2.4%us, 3.0%sy, 0.0%ni, 0.0%id, 94.5%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 65923016k total, 65698400k used, 224616k free, 13828k buffers
Swap: 33030136k total, 17799704k used, 15230432k free, 157316k cached
如你所见,我已经启动了大约 2000 个执行hadoop get
命令的进程,%哇非常高。我在 中限制了内存和 CPU cgroups
,如果我也限制磁盘 IO,这会有帮助吗?如果是的话,有人能告诉我如何在 中做到这一点吗cgroups
?提前致谢。
答案1
您的 RAM 不足以运行这 2000 个进程。
我们在这里可以看到您已经使用全部64GB 内存,还使用了额外的 17GB 交换空间。您的服务器鞭笞,勇敢地尝试交换数据试让这 2000 个进程各自做某事。
但它当然不起作用。
这里只有两个解决方案:
- 启动较少的进程,这样就不会耗尽 RAM。(尝试 1500。)
- 向服务器添加更多 RAM,以便它可以运行所有进程。