我一直在互联网上寻找这里和其他地方,但没有找到问题的答案。
情况是这样的。
我的系统内存不足:
System information as of Sat May 23 12:06:56 CEST 2020
System load: 0.02 Users logged in: 0
Usage of /: 72.8% of 38.71GB IP address for ens3: 92.222.89.93
Memory usage: 12% IP address for docker_gwbridge: 172.18.0.1
Swap usage: 0% IP address for docker0: 172.17.0.1
Processes: 126
我的 docker 守护程序没有显示任何问题:
top - 12:14:46 up 2 days, 22:11, 1 user, load average: 37.87, 21.54, 26.91
Tasks: 187 total, 2 running, 140 sleeping, 0 stopped, 1 zombie
%Cpu(s): 0.8 us, 92.4 sy, 0.0 ni, 0.0 id, 6.5 wa, 0.0 hi, 0.3 si, 0.0 st
KiB Mem : 3941032 total, 118616 free, 3720504 used, 101912 buff/cache
KiB Swap: 0 total, 0 free, 0 used. 14676 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
34 root 20 0 0 0 0 R 71.6 0.0 28:08.90 kswapd0
11405 root 20 0 117504 3920 0 S 0.9 0.1 0:00.32 caddy
1005 root 20 0 934736 61288 0 S 0.7 1.6 19:09.86 dockerd
但是当我调用 docker 命令时出现out of memory
错误:
# docker ps
fatal error: runtime: out of memory
runtime stack:
runtime.throw(0x55d00d234abc, 0x16)
/usr/local/go/src/runtime/panic.go:617 +0x74 fp=0x7ffc081913c0 sp=0x7ffc08191390 pc=0x55d00bc58574
runtime.sysMap(0xc000000000, 0x4000000, 0x55d00f1ddf98)
/usr/local/go/src/runtime/mem_linux.go:170 +0xc9 fp=0x7ffc08191400 sp=0x7ffc081913c0 pc=0x55d00bc43889
runtime.(*mheap).sysAlloc(0x55d00f1c4a80, 0x2000, 0x55d00f1c4a90, 0x1)
/usr/local/go/src/runtime/malloc.go:633 +0x1cf fp=0x7ffc081914a8 sp=0x7ffc08191400 pc=0x55d00bc3669f
runtime.(*mheap).grow(0x55d00f1c4a80, 0x1, 0x0)
/usr/local/go/src/runtime/mheap.go:1222 +0x44 fp=0x7ffc08191500 sp=0x7ffc081914a8 pc=0x55d00bc50c94
runtime.(*mheap).allocSpanLocked(0x55d00f1c4a80, 0x1, 0x55d00f1ddfa8, 0x0)
/usr/local/go/src/runtime/mheap.go:1150 +0x381 fp=0x7ffc08191538 sp=0x7ffc08191500 pc=0x55d00bc50b81
runtime.(*mheap).alloc_m(0x55d00f1c4a80, 0x1, 0x2a, 0x6e43a318)
/usr/local/go/src/runtime/mheap.go:977 +0xc6 fp=0x7ffc08191588 sp=0x7ffc08191538 pc=0x55d00bc501d6
runtime.(*mheap).alloc.func1()
/usr/local/go/src/runtime/mheap.go:1048 +0x4e fp=0x7ffc081915c0 sp=0x7ffc08191588 pc=0x55d00bc812fe
runtime.(*mheap).alloc(0x55d00f1c4a80, 0x1, 0x55d00b01002a, 0x7ffc08191660)
/usr/local/go/src/runtime/mheap.go:1047 +0x8c fp=0x7ffc08191610 sp=0x7ffc081915c0 pc=0x55d00bc504ac
runtime.(*mcentral).grow(0x55d00f1c5880, 0x0)
/usr/local/go/src/runtime/mcentral.go:256 +0x97 fp=0x7ffc08191658 sp=0x7ffc08191610 pc=0x55d00bc43307
runtime.(*mcentral).cacheSpan(0x55d00f1c5880, 0x7ff733676000)
/usr/local/go/src/runtime/mcentral.go:106 +0x301 fp=0x7ffc081916b8 sp=0x7ffc08191658 pc=0x55d00bc42e11
runtime.(*mcache).refill(0x7ff733676008, 0x2a)
/usr/local/go/src/runtime/mcache.go:135 +0x88 fp=0x7ffc081916d8 sp=0x7ffc081916b8 pc=0x55d00bc428a8
runtime.(*mcache).nextFree(0x7ff733676008, 0x55d00f1ba92a, 0x7ff733676008, 0x7ff733676000, 0x8)
/usr/local/go/src/runtime/malloc.go:786 +0x8a fp=0x7ffc08191710 sp=0x7ffc081916d8 pc=0x55d00bc36eda
runtime.mallocgc(0x180, 0x55d00df28480, 0x1, 0x55d00f1de000)
/usr/local/go/src/runtime/malloc.go:939 +0x780 fp=0x7ffc081917b0 sp=0x7ffc08191710 pc=0x55d00bc37810
runtime.newobject(0x55d00df28480, 0x4000)
/usr/local/go/src/runtime/malloc.go:1068 +0x3a fp=0x7ffc081917e0 sp=0x7ffc081917b0 pc=0x55d00bc37c1a
runtime.malg(0x22b1800008000, 0x55d00f1c70f0)
/usr/local/go/src/runtime/proc.go:3220 +0x33 fp=0x7ffc08191820 sp=0x7ffc081917e0 pc=0x55d00bc61a23
runtime.mpreinit(...)
/usr/local/go/src/runtime/os_linux.go:311
runtime.mcommoninit(0x55d00f1bed40)
/usr/local/go/src/runtime/proc.go:618 +0xc6 fp=0x7ffc08191858 sp=0x7ffc08191820 pc=0x55d00bc5b396
runtime.schedinit()
/usr/local/go/src/runtime/proc.go:540 +0x78 fp=0x7ffc081918b0 sp=0x7ffc08191858 pc=0x55d00bc5b028
runtime.rt0_go(0x7ffc081919b8, 0x2, 0x7ffc081919b8, 0x0, 0x7ff732ca9b97, 0x2, 0x7ffc081919b8, 0x200008000, 0x55d00bc83370, 0x0, ...)
/usr/local/go/src/runtime/asm_amd64.s:195 +0x11e fp=0x7ffc081918b8 sp=0x7ffc081918b0 pc=0x55d00bc8349e
欢迎任何建议,尽管我不确定是否能够重现该问题
按照 Manko @John的建议对其中一个容器设置内存限制后,问题不再出现。似乎这解决了我的问题。