Oracle EBS 大量併發請求提交導致內存不足系統殺死Java JVM進程

Oracle EBS服務器的操作系統是Linux 32位的,已經服役將近7年了尷尬。由於月底剛好要盤點,財務要求倉庫不要採購接收入庫,已經累積了二天的採購接收入庫單據需要待入庫的,第三天上午集中做採購接收入庫,而採購接收入庫是客製化開發的,爲了方便用戶批量接收入庫,用戶在短時間時提交57個採購接收入庫請求,加上上午剛好需要給任務單批量發料和對物料事務處理的零成本設置了預警發郵件(佔大多數)。導致大量請求等待運行,準標管理器(參考如下圖)中堆累了2800多個請求在等待執行,所有用戶提交的請求長時間等待。

使用root用戶登陸到服務器檢查日誌信息。

[root@test ~]# dmesg

Free pages:       16832kB (1600kB HighMem)
Active:989274 inactive:7185884 dirty:164757 writeback:1907 unstable:0 free:4208 slab:92406 mapped:364437 pagetables:30301
DMA free:12456kB min:64kB low:128kB high:192kB active:0kB inactive:0kB present:16384kB pages_scanned:0 all_unreclaimable? yes
protections[]: 0 0 0
Normal free:2776kB min:3728kB low:7456kB high:11184kB active:2964kB inactive:181744kB present:901120kB pages_scanned:946935 all_unreclaimable? yes
protections[]: 0 0 0
HighMem free:1600kB min:512kB low:1024kB high:1536kB active:3954132kB inactive:28562000kB present:34734080kB pages_scanned:0 all_unreclaimable? no
protections[]: 0 0 0
DMA: 4*4kB 3*8kB 2*16kB 3*32kB 4*64kB 2*128kB 2*256kB 0*512kB 1*1024kB 1*2048kB 2*4096kB = 12456kB
Normal: 0*4kB 13*8kB 3*16kB 0*32kB 3*64kB 1*128kB 1*256kB 0*512kB 0*1024kB 1*2048kB 0*4096kB = 2776kB
HighMem: 24*4kB 56*8kB 26*16kB 4*32kB 0*64kB 0*128kB 2*256kB 0*512kB 0*1024kB 0*2048kB 0*4096kB = 1600kB
7971600 pagecache pages
Swap cache: add 39533379, delete 39463739, find 14326603/18433760, race 6+1371
1292 bounce buffer pages
Free swap:       16335800kB
8912896 pages of RAM
8155583 pages of HIGHMEM
599298 reserved pages
4628289 pages shared
70543 pages swap cached
Out of Memory: Killed process 24873 (java).
根據日誌分析可能是大量併發請求提交致導內存不足,系統進程殺死Java JVM進程,而請求一直接等待Java處理輸出結果,從而所有請求全在等待。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章