JAVAプロセスが怪しく消え、oom killerがやった
8321 ワード
beta環境では,2つのプロジェクトが頻繁にクラッシュする.PSはプロセスを見て、JAVAプロセスは消えた.
まずDump、ErrorFileを追加して確認し、再度発生した場合、両方のログは出力されません.
再現を試みて、時には発生して、時には正常で、とても不規則です.
この過程でtopはjavaプロセスを調べ、発生時にJAVAのメモリが50%から95%に急上昇し、JAVAプロセスが消えたことを発見した.
linuxログを表示すると、/var/log/messageでこのようなログが見つかります.
ここで、JAVAプロセスは確かにLINUXのoom killerによって行われたことがわかります.
oom killerはlinuxシステムの保護プロセスであり、linuxシステムのメモリ容量がシステムの正常な動作を満たすのに不足している場合にトリガーされます.
oomkillerが実行すると、システムのすべてのスレッドのscore値が最も高いpidが見つかり、乾きます.
このscoreの値の影響要因は多く,メモリ占有サイズ,実行時間,重みなどである.重みが高いほどスコアが高くなり、実行時間が短くなり、スコアが高くなるほどメモリが大きくなり、スコアが高くなります.
このJAVAプロセスでは、最初の実行時にメモリにいくつかのコンテンツがロードされます.したがって、システムの実行時間が短く、メモリの割合が高く、重み値は/proc//oom_を表示できます.score_adjは、現在0なので、点数が一番高いです.
キラーはJAVAをやめた.現在のスコアは/proc//oom_を表示できます.score表示.
しかし、ログを見ると、システムにはまだ大量のswap交換空間が使用されていないことがわかります.なぜoomを直接トリガーしたのでしょうか.
表示/proc/sys/vm/swapiness値は0です.システムが物理メモリを使用する傾向があることを示します.しかし,この値は傾向的であり,0を構成してswapを使用しないわけではない.
資料を調べてみると、linux 2.6.32-303.el 6の後、この意味は乾かされた.
This patch changes the behavior with swappiness==0. If we set
swappiness==0, the kernel does not swap out completely (for global reclaim
until the amount of free pages and filebacked pages in a zone has been
reduced to something very very small (nr_free + nr_filebacked < high
watermark)).
このpatchが書いたように、このpatchはswapiness=0の動作を修正し、swapiness=0を設定すると、(nr_free+nr_filebackedこれにより,副作用は,メモリが不足するとLinuxがOOMをトリガし,メモリ消費量が最も多いJAVAプロセスをkillする可能性があるということである.
今は分かりました.その解決策も出てきました.
1、JVMの最大メモリを調整し、システムの最大物理メモリより小さい.(私はそうしました.以前はシステムが2 Gで、最大メモリが2 Gになって問題が発生しました.1 Gに変更しました).
2、新しいカーネル、vm.swappiness=1を設定する
3、oomkillerを閉じます.
4、プロセスoom_を下げるscore_adjの重み.負数-1000~1000とすることができます.oom_adjは古いので、変更してもカーネルアルゴリズムはoom_に合っています.score_adj計算.
まずDump、ErrorFileを追加して確認し、再度発生した場合、両方のログは出力されません.
再現を試みて、時には発生して、時には正常で、とても不規則です.
この過程でtopはjavaプロセスを調べ、発生時にJAVAのメモリが50%から95%に急上昇し、JAVAプロセスが消えたことを発見した.
linuxログを表示すると、/var/log/messageでこのようなログが見つかります.
Mar 21 10:53:33 l-noahs687ktdv1.auto.beta.cn0 kernel: master invoked oom-killer: gfp_mask=0x201da, order=0, oom_adj=0, oom_score_adj=0
Mar 21 10:53:33 l-noahs687ktdv1.auto.beta.cn0 kernel: master cpuset=/ mems_allowed=0
Mar 21 10:53:33 l-noahs687ktdv1.auto.beta.cn0 kernel: Pid: 1287, comm: master Not tainted 2.6.32-358.23.2.el6.x86_64 #1
Mar 21 10:53:33 l-noahs687ktdv1.auto.beta.cn0 kernel: active_anon:338189 inactive_anon:123825 isolated_anon:0
Mar 21 10:53:33 l-noahs687ktdv1.auto.beta.cn0 kernel: active_file:4595 inactive_file:15377 isolated_file:0
Mar 21 10:53:33 l-noahs687ktdv1.auto.beta.cn0 kernel: unevictable:0 dirty:16077 writeback:0 unstable:0
Mar 21 10:53:33 l-noahs687ktdv1.auto.beta.cn0 kernel: free:13246 slab_reclaimable:2669 slab_unreclaimable:6168
Mar 21 10:53:33 l-noahs687ktdv1.auto.beta.cn0 kernel: mapped:3376 shmem:0 pagetables:1888 bounce:0
Mar 21 10:53:33 l-noahs687ktdv1.auto.beta.cn0 kernel: Node 0 DMA free:8316kB min:332kB low:412kB high:496kB active_anon:748kB inactive_anon:6672kB active_file:0kB inactive_file:0kB unevictable:0kB isolated(anon):0kB isolated(file):0kB present:15348kB mlocked:0kB dirty:0kB writeback:0kB mapped:0kB shmem:0kB slab_reclaimable:4kB slab_unreclaimable:0kB kernel_stack:0kB pagetables:0kB unstable:0kB bounce:0kB writeback_tmp:0kB pages_scanned:32 all_unreclaimable? no
Mar 21 10:53:33 l-noahs687ktdv1.auto.beta.cn0 kernel: lowmem_reserve[]: 0 2004 2004 2004
Mar 21 10:53:33 l-noahs687ktdv1.auto.beta.cn0 kernel: Node 0 DMA32 free:44668kB min:44720kB low:55900kB high:67080kB active_anon:1352008kB inactive_anon:488628kB active_file:18380kB inactive_file:61508kB unevictable:0kB isolated(anon):0kB isolated(file):0kB present:2052308kB mlocked:0kB dirty:64308kB writeback:0kB mapped:13504kB shmem:0kB slab_reclaimable:10672kB slab_unreclaimable:24672kB kernel_stack:3352kB pagetables:7552kB unstable:0kB bounce:0kB writeback_tmp:0kB pages_scanned:1559392 all_unreclaimable? no
Mar 21 10:53:33 l-noahs687ktdv1.auto.beta.cn0 kernel: lowmem_reserve[]: 0 0 0 0
Mar 21 10:53:33 l-noahs687ktdv1.auto.beta.cn0 kernel: Node 0 DMA: 3*4kB 2*8kB 2*16kB 2*32kB 12*64kB 6*128kB 8*256kB 1*512kB 2*1024kB 1*2048kB 0*4096kB = 8316kB
Mar 21 10:53:33 l-noahs687ktdv1.auto.beta.cn0 kernel: Node 0 DMA32: 813*4kB 465*8kB 308*16kB 216*32kB 132*64kB 52*128kB 12*256kB 11*512kB 2*1024kB 0*2048kB 0*4096kB = 44668kB
Mar 21 10:53:33 l-noahs687ktdv1.auto.beta.cn0 kernel: 34657 total pagecache pages
Mar 21 10:53:33 l-noahs687ktdv1.auto.beta.cn0 kernel: 14553 pages in swap cache
Mar 21 10:53:33 l-noahs687ktdv1.auto.beta.cn0 kernel: Swap cache stats: add 659065, delete 644512, find 159998/176201
Mar 21 10:53:33 l-noahs687ktdv1.auto.beta.cn0 kernel: Free swap = 4091960kB
Mar 21 10:53:33 l-noahs687ktdv1.auto.beta.cn0 kernel: Total swap = 4194296kB
Mar 21 10:53:33 l-noahs687ktdv1.auto.beta.cn0 kernel: 524284 pages RAM
Mar 21 10:53:33 l-noahs687ktdv1.auto.beta.cn0 kernel: 10683 pages reserved
Mar 21 10:53:33 l-noahs687ktdv1.auto.beta.cn0 kernel: 22147 pages shared
Mar 21 10:53:33 l-noahs687ktdv1.auto.beta.cn0 kernel: 475274 pages non-shared
Mar 21 10:53:33 l-noahs687ktdv1.auto.beta.cn0 kernel: Out of memory: Kill process 6728 (java) score 286 or sacrifice child
Mar 21 10:53:33 l-noahs687ktdv1.auto.beta.cn0 kernel: Killed process 6728, UID 40001, (java) total-vm:5041844kB, anon-rss:1773172kB, file-rss:11236kB
Mar 21 10:53:33 l-noahs687ktdv1.auto.beta.cn0 kernel: rsyslogd invoked oom-killer: gfp_mask=0x201da, order=0, oom_adj=0, oom_score_adj=0
Mar 21 10:53:33 l-noahs687ktdv1.auto.beta.cn0 kernel: rsyslogd cpuset=/ mems_allowed=0
Mar 21 10:53:33 l-noahs687ktdv1.auto.beta.cn0 kernel: Pid: 1158, comm: rsyslogd Not tainted 2.6.32-358.23.2.el6.x86_64 #1
Mar 21 10:53:33 l-noahs687ktdv1.auto.beta.cn0 kernel: active_anon:338189 inactive_anon:123825 isolated_anon:0
Mar 21 10:53:33 l-noahs687ktdv1.auto.beta.cn0 kernel: active_file:4595 inactive_file:15407 isolated_file:0
Mar 21 10:53:33 l-noahs687ktdv1.auto.beta.cn0 kernel: unevictable:0 dirty:16077 writeback:0 unstable:0
Mar 21 10:53:33 l-noahs687ktdv1.auto.beta.cn0 kernel: free:13246 slab_reclaimable:2669 slab_unreclaimable:6168
Mar 21 10:53:33 l-noahs687ktdv1.auto.beta.cn0 kernel: mapped:3376 shmem:0 pagetables:1888 bounce:0
Mar 21 10:53:33 l-noahs687ktdv1.auto.beta.cn0 kernel: Node 0 DMA free:8316kB min:332kB low:412kB high:496kB active_anon:748kB inactive_anon:6672kB active_file:0kB inactive_file:0kB unevictable:0kB isolated(anon):0kB isolated(file):0kB present:15348kB mlocked:0kB dirty:0kB writeback:0kB mapped:0kB shmem:0kB slab_reclaimable:4kB slab_unreclaimable:0kB kernel_stack:0kB pagetables:0kB unstable:0kB bounce:0kB writeback_tmp:0kB pages_scanned:32 all_unreclaimable? no
Mar 21 10:53:33 l-noahs687ktdv1.auto.beta.cn0 kernel: lowmem_reserve[]: 0 2004 2004 2004
Mar 21 10:53:33 l-noahs687ktdv1.auto.beta.cn0 kernel: Node 0 DMA32 free:44668kB min:44720kB low:55900kB high:67080kB active_anon:1352008kB inactive_anon:488628kB active_file:18380kB inactive_file:61504kB unevictable:0kB isolated(anon):0kB isolated(file):0kB present:2052308kB mlocked:0kB dirty:64308kB writeback:0kB mapped:13504kB shmem:0kB slab_reclaimable:10672kB slab_unreclaimable:24672kB kernel_stack:3352kB pagetables:7552kB unstable:0kB bounce:0kB writeback_tmp:0kB pages_scanned:2114272 all_unreclaimable? no
Mar 21 10:53:33 l-noahs687ktdv1.auto.beta.cn0 kernel: lowmem_reserve[]: 0 0 0 0
Mar 21 10:53:33 l-noahs687ktdv1.auto.beta.cn0 kernel: Node 0 DMA: 3*4kB 2*8kB 2*16kB 2*32kB 12*64kB 6*128kB 8*256kB 1*512kB 2*1024kB 1*2048kB 0*4096kB = 8316kB
Mar 21 10:53:33 l-noahs687ktdv1.auto.beta.cn0 kernel: Node 0 DMA32: 813*4kB 465*8kB 308*16kB 216*32kB 132*64kB 52*128kB 12*256kB 11*512kB 2*1024kB 0*2048kB 0*4096kB = 44668kB
Mar 21 10:53:33 l-noahs687ktdv1.auto.beta.cn0 kernel: 34657 total pagecache pages
Mar 21 10:53:33 l-noahs687ktdv1.auto.beta.cn0 kernel: 14553 pages in swap cache
Mar 21 10:53:33 l-noahs687ktdv1.auto.beta.cn0 kernel: Swap cache stats: add 659065, delete 644512, find 159998/176201
Mar 21 10:53:33 l-noahs687ktdv1.auto.beta.cn0 kernel: Free swap = 4091960kB
Mar 21 10:53:33 l-noahs687ktdv1.auto.beta.cn0 kernel: Total swap = 4194296kB
Mar 21 10:53:33 l-noahs687ktdv1.auto.beta.cn0 kernel: 524284 pages RAM
Mar 21 10:53:33 l-noahs687ktdv1.auto.beta.cn0 kernel: 10683 pages reserved
Mar 21 10:53:33 l-noahs687ktdv1.auto.beta.cn0 kernel: 22179 pages shared
Mar 21 10:53:33 l-noahs687ktdv1.auto.beta.cn0 kernel: 475274 pages non-shared
ここで、JAVAプロセスは確かにLINUXのoom killerによって行われたことがわかります.
oom killerはlinuxシステムの保護プロセスであり、linuxシステムのメモリ容量がシステムの正常な動作を満たすのに不足している場合にトリガーされます.
oomkillerが実行すると、システムのすべてのスレッドのscore値が最も高いpidが見つかり、乾きます.
このscoreの値の影響要因は多く,メモリ占有サイズ,実行時間,重みなどである.重みが高いほどスコアが高くなり、実行時間が短くなり、スコアが高くなるほどメモリが大きくなり、スコアが高くなります.
このJAVAプロセスでは、最初の実行時にメモリにいくつかのコンテンツがロードされます.したがって、システムの実行時間が短く、メモリの割合が高く、重み値は/proc//oom_を表示できます.score_adjは、現在0なので、点数が一番高いです.
キラーはJAVAをやめた.現在のスコアは/proc//oom_を表示できます.score表示.
しかし、ログを見ると、システムにはまだ大量のswap交換空間が使用されていないことがわかります.なぜoomを直接トリガーしたのでしょうか.
表示/proc/sys/vm/swapiness値は0です.システムが物理メモリを使用する傾向があることを示します.しかし,この値は傾向的であり,0を構成してswapを使用しないわけではない.
資料を調べてみると、linux 2.6.32-303.el 6の後、この意味は乾かされた.
This patch changes the behavior with swappiness==0. If we set
swappiness==0, the kernel does not swap out completely (for global reclaim
until the amount of free pages and filebacked pages in a zone has been
reduced to something very very small (nr_free + nr_filebacked < high
watermark)).
このpatchが書いたように、このpatchはswapiness=0の動作を修正し、swapiness=0を設定すると、(nr_free+nr_filebacked
今は分かりました.その解決策も出てきました.
1、JVMの最大メモリを調整し、システムの最大物理メモリより小さい.(私はそうしました.以前はシステムが2 Gで、最大メモリが2 Gになって問題が発生しました.1 Gに変更しました).
2、新しいカーネル、vm.swappiness=1を設定する
3、oomkillerを閉じます.
4、プロセスoom_を下げるscore_adjの重み.負数-1000~1000とすることができます.oom_adjは古いので、変更してもカーネルアルゴリズムはoom_に合っています.score_adj計算.