这有点不太可能,但我们目前遇到了我们的一个Dockerized Java应用程序的一些问题:Stackoverlow 问题
我们将 docker 内存限制设置为 2GB,这远远超出了 java 应用程序可以使用的范围,因此我确实在寻找导致此问题的任何可能原因。
在内存碎片整理/压缩期间,系统是否会报告正在执行这些操作的应用程序(在其分配的内存上)的内存使用率更高,从而触发docker的OOM killer?
有关其中一台 EC2 服务器的更多信息
cat /proc/pagetypeinfo
Page block order: 9
Pages per block: 512
Free pages count per migrate type at order 0 1 2 3 4 5 6 7 8 9 10
Node 0, zone DMA, type Unmovable 1 0 0 1 2 1 1 0 1 0 0
Node 0, zone DMA, type Movable 0 0 0 0 0 0 0 0 0 1 3
Node 0, zone DMA, type Reclaimable 0 0 0 0 0 0 0 0 0 0 0
Node 0, zone DMA, type HighAtomic 0 0 0 0 0 0 0 0 0 0 0
Node 0, zone DMA, type Isolate 0 0 0 0 0 0 0 0 0 0 0
Node 0, zone DMA32, type Unmovable 2160 1450 509 358 72 0 0 0 0 0 0
Node 0, zone DMA32, type Movable 39753 18110 3832 317 88 18 2 0 0 0 0
Node 0, zone DMA32, type Reclaimable 479 970 7 6 3 0 1 0 0 0 0
Node 0, zone DMA32, type HighAtomic 0 0 0 0 0 0 0 0 0 0 0
Node 0, zone DMA32, type Isolate 0 0 0 0 0 0 0 0 0 0 0
Node 0, zone Normal, type Unmovable 72 410 350 0 0 0 0 0 0 0 0
Node 0, zone Normal, type Movable 132228 61046 1635 0 0 0 0 0 0 0 0
Node 0, zone Normal, type Reclaimable 0 2 7 1 0 0 0 0 0 0 0
Node 0, zone Normal, type HighAtomic 2 0 15 11 7 2 0 0 0 0 0
Node 0, zone Normal, type Isolate 0 0 0 0 0 0 0 0 0 0 0
Number of blocks type Unmovable Movable Reclaimable HighAtomic Isolate
Node 0, zone DMA 1 7 0 0 0
Node 0, zone DMA32 59 1391 78 0 0
Node 0, zone Normal 448 5888 127 1 0
cat /proc/sys/vm/extfrag_threshold
500
cat /sys/kernel/debug/extfrag/extfrag_index
Node 0, zone DMA -1.000 -1.000 -1.000 -1.000 -1.000 -1.000 -1.000 -1.000 -1.000 -1.000 -1.000
Node 0, zone DMA32 -1.000 -1.000 -1.000 -1.000 -1.000 -1.000 -1.000 0.988 0.994 0.997 0.999
Node 0, zone Normal -1.000 -1.000 -1.000 -1.000 -1.000 -1.000 0.979 0.990 0.995 0.998 0.999
免费-h
total used free shared buff/cache available
Mem: 15G 11G 1.5G 1.2M 2.4G 3.7G
Swap: 4.0G 907M 3.1G
我们的生产服务器(已运行近一年)只存在此问题,我们的低级环境每周末都会停止运行,到目前为止我们还没有设法手动触发此问题。不过,我们将在下周尝试更换服务器,希望此问题发生的可能性大大降低。
我知道这是一个不太可能的问题,我并不是 Linux 内存管理方面的专家,而且这不太可能是根本原因,但我很想知道答案。