相关疑难解决方法(0)

防止节点在 600 MB 内存限制的 docker build 中内存不足

docker build在构建内存和 CPU 的限制下运行。为了保持在构建的 CPU 和内存限制内,我还将 Node 的堆大小限制为 325 MB。这是docker build命令。

docker build --build-arg NODE_OPTIONS=--max-old-space-size=325 \
             --memory=600m --memory-swap=-1 \ 
             --cpu-period=100000 --cpu-quota=50000 \
             --no-cache --tag farm_app_image:latest --file Dockerfile .
Run Code Online (Sandbox Code Playgroud)

构建资源摘要

  • 节点 JS 堆限制:325 MB
  • 构建内存:600 MB,无限制使用交换文件。
  • 构建 CPU 时间:50%

尽管节点堆限制低于构建内存,并且尽管具有无限交换,但npm run buildreact-scripts build步骤的内存不足。

错误输出

  > react-scripts build                            

  Creating an optimized production build...                                                                                                                                          
EXEC : FATAL error : Ineffective mark-compacts near heap limit Allocation failed - JavaScript heap out of memory …
Run Code Online (Sandbox Code Playgroud)

node.js npm docker docker-build

19
推荐指数
1
解决办法
1万
查看次数

在节点中手动运行垃圾收集

我正在使用节点,我正在考虑在节点中手动运行垃圾收集.这有什么缺点吗?我这样做的原因是看起来节点没有经常运行垃圾收集.有谁知道V8在节点中执行垃圾收集例程的频率如何?

谢谢!

node.js

10
推荐指数
3
解决办法
1万
查看次数

将Node.js内存使用限制为每个进程少于300MB

我们在单独的进程中运行测试,我们的一些测试套件包含20多个文件.我们如何限制(而不是增加)Node.js进程使用的内存量小于300MB?如果我们不限制内存,我们可以使用高达20x500MB,大约10GB,这是太多的内存.

我可以在网上找到一些关于增加内存的文章,但我找不到任何关于限制每个进程内存的内容.

具体来说,我们使用核心child_process模块​​来创建子进程,我想我们需要一些标志或arg传递给cp来指定各种内存上限.

memory process node.js

7
推荐指数
1
解决办法
7799
查看次数

Node.JS 进程使用了​​ 1.4 GB 的内存,但是 heapdump 只有 300 MB

我正在运行一个带有 Node.JS 的 Socket.IO 服务器,它通常使用大约 400 MB 的内存,因为有很多数据被缓存发送到客户端。然而,几个小时后,它突然开始在大约 40 分钟内增长到 1.4 GB。有人告诉我使用 heapdump 来查找是否存在内存泄漏。

问题是堆转储结果只有 317 MB,而且里面没有任何异常,所以我一直在调试。我还使用 nodetime 运行它,它表示 V8 堆使用量约为 400 MB,但 V8 堆总大小为 1.4 GB。

如何找出剩余的 1 GB 来自哪里?

v8 node.js

5
推荐指数
1
解决办法
2885
查看次数

标签 统计

node.js ×4

docker ×1

docker-build ×1

memory ×1

npm ×1

process ×1

v8 ×1