
這有點遙遠,但我們目前的 Docker 化 Java 應用程式之一遇到了一些問題:堆疊溢位問題
我們已將 docker 記憶體限制設為 2GB,這遠遠超出了 java 應用程式可以使用的範圍,因此我正在尋找導致此問題的任何可能原因。
是否有可能在記憶體碎片整理/壓縮期間,系統報告正在執行這些操作的應用程式(在其分配的記憶體上)的記憶體使用量較高,從而觸發 docker 的 OOM 殺手?
其中一台 EC2 伺服器的更多信息
貓 /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
貓 /proc/sys/vm/extfrag_threshold
500
貓/系統/核心/調試/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 記憶體管理方面的專家,而且它可能不太可能是根本原因,但這是一個我很想知道答案的問題。