在Excel生成文件崩溃之前,Nodejs V8 GC正在通知

我在我的应用程序中使用xlsx图表节点模块。 该模块使用内存从您的数据点生成Excel图表。 有时当我有太多的数据点我的节点js应用程序崩溃,如下所示:

<--- Last few GCs ---> [6420:000000CD560122F0] 77691 ms: Mark-sweep 2047.4 (2086.4) -> 2047.4 (2086.4) MB, 1235.2 / 0.1 ms allocation failure GC in old space requested [6420:000000CD560122F0] 79246 ms: Mark-sweep 2047.4 (2086.4) -> 2047.4 (2086.4) MB, 1141.2 / 0.0 ms last resort [6420:000000CD560122F0] 80808 ms: Mark-sweep 2047.4 (2086.4) -> 2047.4 (2086.4) MB, 1561.1 / 0.0 ms last resort <--- JS stacktrace ---> ==== JS stack trace ========================================= Security context: 000001D77B79BBE9 <JS Object> 2: /* anonymous */ [C:\XXXX\base64.js:~7] [pc=000001A01E7EC475](this=000000BA 08CE36B1 <an Object with map 0000038E23FBE9A9>,input=0000017D18202201 <Very long string[50266376]>,utf8=000001D77B782241 <undefined>) 3: arguments adaptor frame: 1->2 4: generate [C:\XXXXX 

起初我试图把我所说的做excel文件function的地方尝试和捕捉块,如果这样的堆错误发生,我只是发送一个正确的消息给用户,并重新启动我的服务器。 但是它看起来GC独立于try catch错误发生。

所以我的主要问题是,如何在CG崩溃之前将响应发送给用户,以及如何在发生此类崩溃时自动重新启动服务器。

谢谢

您可以使用--max-old-space-size来增加node.js进程可以使用的最大内存。

您可以使用PM2工具在发生崩溃时重新启动应用程序。


我build议你找出当你生成文件时有什么限制。 而且,可以将node.js最大的大小相应地添加到要生成的文件中; 或者保持excel的一代。 你的node.js不应该得到这个错误,应该是可以预料的。