kibana 報錯 FATAL ERROR: CALL_AND_RETRY_LAST Allocation failed - JavaScript heap out of memory


環境

kibana6.4.3

logstash6.4.3

es6.4.3

日志收集服務器內存8g

前景

elk 服務器搭建好的前幾天服務都正常

大概一周以后出現kibana 連接不上,登錄服務器發現只有 kibana 掛掉,es 和 logstash 都正常運行,排查日志發現:

 

<--- Last few GCs --->
 
[7232:0x28c9b10] 1349425042 ms: Mark-sweep 1360.5 (1431.3) -> 1360.5 (1431.3) MB, 1475.4 / 0.0 ms  allocation failure GC in old space requested
[7232:0x28c9b10] 1349426671 ms: Mark-sweep 1360.5 (1431.3) -> 1360.5 (1431.3) MB, 1628.7 / 0.1 ms  last resort GC in old space requested
[7232:0x28c9b10] 1349428162 ms: Mark-sweep 1360.5 (1431.3) -> 1360.5 (1431.3) MB, 1490.7 / 0.0 ms  last resort GC in old space requested
<--- JS stacktrace --->

==== JS stack trace =========================================

Security context: 0x2e54d3625879 <JSObject>
    2: /* anonymous */(aka /* anonymous */) [/opt/kibana-6.4.3/src/server/status/lib/cgroup.js:70] [bytecode=0x1d79566d9321 offset=20](this=0x754e6a822d1 <undefined>,controller=0x31e957539041 <String[4]: pids>)
    3: arguments adaptor frame: 3->1
    4: forEach(this=0x31e957539061 <JSArray[1]>)
    5: /* anonymous */(aka /* anonymous */) [/opt/kibana-6.4.3/src/server/status/lib/cgroup.js:69] [b...

FATAL ERROR: CALL_AND_RETRY_LAST Allocation failed - JavaScript heap out of memory
 1: node::Abort() [./../node/bin/node]
 2: 0x8c21ec [./../node/bin/node]
 3: v8::Utils::ReportOOMFailure(char const*, bool) [./../node/bin/node]
 4: v8::internal::V8::FatalProcessOutOfMemory(char const*, bool) [./../node/bin/node]
 5: v8::internal::Factory::NewFixedArray(int, v8::internal::PretenureFlag) [./../node/bin/node]
 6: v8::internal::HashTable<v8::internal::StringTable, v8::internal::StringTableShape>::NewInternal(v8::internal::Isolate*, int, v8::internal::PretenureFlag) [./../node/bin/node]
 7: v8::internal::HashTable<v8::internal::StringTable, v8::internal::StringTableShape>::New(v8::internal::Isolate*, int, v8::internal::PretenureFlag, v8::internal::MinimumCapacity) [./../node/bin/node]
 8: v8::internal::HashTable<v8::internal::StringTable, v8::internal::StringTableShape>::EnsureCapacity(v8::internal::Handle<v8::internal::StringTable>, int, v8::internal::PretenureFlag) [./../node/bin/node]
 9: v8::internal::StringTable::LookupString(v8::internal::Isolate*, v8::internal::Handle<v8::internal::String>) [./../node/bin/node]
10: v8::internal::LookupIterator::PropertyOrElement(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Object>, v8::internal::Handle<v8::internal::Object>, bool*, v8::internal::LookupIterator::Configuration) [./../node/bin/node]
11: v8::internal::Runtime_SetProperty(int, v8::internal::Object**, v8::internal::Isolate*) [./../node/bin/node]
12: 0x22a4d09842fd

 

發現是前端 js 報的內存 oom 異常,通過網上資料發現node.js 的默認內存大小為1.4g

Node 中通過 JavaScript 使用內存時只能使用部分內存(64位系統下約為1.4 GB,32位系統下約為0.7 GB),這就是我們編譯項目時為什么會出現內存泄露了,因為前端項目如果非常的龐大,webpack 編譯時就會占用很多的系統資源,如果超出了V8對 Node 默認的內存限制大小就會出現node內存溢出的報錯:CALL_AND_RETRY_LAST Allocation failed - JavaScript heap out of memory

 

進入 kibana/bin 目錄(也可以設置在 node 的環境變量里,我是加在 kibana 文件中)

vi kibana

添加內存空間的環境變量(以下 size 為1g,根據實際情況修改)

NODE_OPTIONS="--max-old-space-size=12288"

 

 

 

 

https://segmentfault.com/a/1190000017972349

https://banyudu.com/posts/dynamic-change-nodejs-memory-limit.3c34c2

https://forum.search-guard.com/t/kibana-7-6-memory-issue-with-sg/1814


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM