node.js - Nodejs V8 GC 在 Excel 生成文件崩溃之前被通知

标签 node.js excel crash v8 heap-memory

我在我的应用程序中使用 xlsx-chart Node 模块。该模块使用内存从数据点生成 Excel 图表。有时,当我有太多数据点时,我的 Node 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 文件函数的位置放在 try 和 catch block 中,如果发生此类堆错误,我只需向用户发送正确的消息并重新启动我的服务器。但看起来 GC 的发生与 try catch 错误无关。

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

谢谢

最佳答案

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

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

<小时/>

但是

我建议您在生成文件时了解限制是什么。或者,根据您想要生成的文件相应地增大您的node.js 可以采用的最大大小;或者限制excel一代。你的node.js不应该出现这个错误,这是可以预料到的。

关于node.js - Nodejs V8 GC 在 Excel 生成文件崩溃之前被通知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47592814/

相关文章:

node.js - Joi - 根据其他键上的值需要

excel - 在 Microsoft Excel 中,如何将单引号应用于公式中的工作表名称?

sql - 使用 VBA 在 Excel 中查询 SQL Server 表

meteor - Meteor React.js添加用户帐户使应用程序崩溃

ios - 由于启动时崩溃,应用程序被拒绝两次

javascript - 更新酒店房间预订数组 - Mongoose

javascript - Node - 从等待结果返回内联中选择一个变量

node.js - 无法登录到 GitHub 包注册表

vba - 在 Excel 公式中达到 =sum 中的最大被加数时是否有解决方法?

java - "Unfortunately MyApp has stopped"当我按下一个按钮