【问题标题】:Serverless Framework - JavaScript heap out of memory无服务器框架 - JavaScript 堆内存不足
【发布时间】:2020-10-22 11:37:19
【问题描述】:

当我使用“无服务器脱机”命令部署或运行​​服务时,我遇到了“JavaScript 堆内存不足”的问题。

我正在使用 nestjs - 一个节点框架 - 并为节点 10x 构建项目。 在我的终端上,我得到了这个。

我发现了一些修复,例如

  1. 在终端输入“node --max-old-space-size=1024 index.js”
  2. 使用这个包https://www.npmjs.com/package/increase-memory-limit
  3. 在 package.json 中的 script 标签上附加一些类似 ""scripts": { “webpacker”:“节点 --max_old_space_size=4096” 不是这些作品。

有什么线索吗?

PS D:\m1_workspace\dw-api> serverless offline
Serverless: Compiling with Typescript...
Serverless: Using local tsconfig.json

<--- Last few GCs --->
al[21864:000001EF81231660]    20688 ms: Mark-sweep 1394.2 (1429.4) -> 1392.3 (1429.9) MB, 977.1 / 0.0 ms  (+ 0.0 ms in 62 steps since start of marking, biggest step 0.0 ms, walltime since start of marking 987 ms) (average mu = 0.074, current mu = 0.010) all[21864:000001EF81231660]    21557 ms: Mark-sweep 1392.3 (1429.9) -> 1392.2 (1427.9) MB, 868.1 / 0.0 ms  (+ 0.0 ms in 0 steps since start of marking, biggest step 0.0 ms, walltime since start of marking 868 ms) (average mu = 0.037, current mu = 0.001) allo

<--- JS stacktrace --->

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

Security context: 0x002e2c61e6e9 <JSObject>
    0: builtin exit frame: splice(this=0x03a8c4a97e89 <JSArray[8]>,0x0237e40868f9 <TypeObject map = 000001453BA516C9>,0,8,0x03a8c4a97e89 <JSArray[8]>)

    1: getUnionType(aka getUnionType) [00000057B5C33821] [D:\m1_workspace\dw-api\node_modules\@hewmen\serverless-plugin-typescript\node_modules\typescript\lib\typescript.js:~34245] [pc=000003F28C0363E9](this=0x007f886026f1 <undefined>,types=0x010...

FATAL ERROR: Ineffective mark-compacts near heap limit Allocation failed - JavaScript heap out of memory

【问题讨论】:

  • 您的代码在内存不足时会做什么?可能是一堆同时进行的异步操作?还是将大文件读入内存?还是解析大段的 JSON?

标签: node.js aws-lambda nestjs serverless-framework


【解决方案1】:

一种快速的解决方法是先尝试运行以下命令:

export NODE_OPTIONS=--max_old_space_size=8192

我有一个大型无服务器项目,当我尝试使用“sls deply”进行部署时遇到了类似的问题。这个解决方法对我有用。

希望对你有帮助。

【讨论】:

  • 运行时显示,export is not recornized
【解决方案2】:

这也发生在我身上-
我意识到我已经定义了我的无服务器配置来单独打包每个 lambda。
看起来像这样:

package:
  individually: true

将其更改为:

package:
  individually: false

为我工作。

(当然,如果单独打包你的 lambda 函数对你来说至关重要,那么你会失去它,但对我来说不是)。

【讨论】:

  • 我有同样的问题,它对我有用
猜你喜欢
  • 1970-01-01
  • 2018-02-10
  • 2019-09-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-27
  • 2017-10-10
  • 2019-09-10
  • 1970-01-01
相关资源
最近更新 更多