我在 server_A 上有一个 50 GB 的文件,我正在将它复制到 server_B。我跑
server_A$ rsync --partial --progress --inplace --append-verify 50GB_file root@server_B:50GB_file
Run Code Online (Sandbox Code Playgroud)
Server_B 有 32 GB RAM 和 2 GB 交换。它主要是空闲的,应该有很多空闲内存。它有足够的磁盘空间。在大约 32 GB 时,传输中止,因为远程端关闭了连接。
Server_B 现在已断开网络。我们要求数据中心重新启动它。当我查看崩溃前的内核日志时,我看到它使用了 0 字节的交换空间,并且进程列表使用了很少的内存(rsync 进程被列为使用 600 KB 的 RAM),但是 oom_killer 是变得疯狂,日志中的最后一件事是它杀死了 metalog 的内核读取器进程。
这是内核 3.2.59,32 位(因此任何进程都不能映射超过 4 GB)。
就好像 Linux 更优先考虑缓存而不是长期运行的守护进程。是什么赋予了??我怎样才能阻止它再次发生?
这是 oom_killer 的输出:
Sep 23 02:04:16 [kernel] [1772321.850644] clamd invoked oom-killer: gfp_mask=0x84d0, order=0, oom_adj=0, oom_score_adj=0
Sep 23 02:04:16 [kernel] [1772321.850649] Pid: 21832, comm: clamd Tainted: G C 3.2.59 #21
Sep 23 02:04:16 …Run Code Online (Sandbox Code Playgroud) 我有一台运行 Linux 3.2.12 32 位 i686 的服务器,有 13 个驱动器:1 个引导驱动器和 3 个 raid5 设备,每个设备有 4 个驱动器。
/proc/mdstat 显示
Personalities : [raid1] [raid10] [raid6] [raid5] [raid4]
md2 : active raid5 sdd1[3] sdc1[2] sdb1[1] sda1[0]
5860535808 blocks level 5, 64k chunk, algorithm 2 [4/4] [UUUU]
md1 : active raid5 sdk1[3] sdj1[2] sdi1[1] sdh1[0]
4395407808 blocks level 5, 64k chunk, algorithm 2 [4/4] [UUUU]
md3 : active raid5 sdl1[0] sdm1[1] sdf1[3] sde1[2]
5860535808 blocks level 5, 64k chunk, algorithm 2 [4/4] [UUUU]
unused …Run Code Online (Sandbox Code Playgroud)