我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)
尽管节点堆限制低于构建内存,并且尽管具有无限交换,但npm run build该react-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) 我正在使用节点,我正在考虑在节点中手动运行垃圾收集.这有什么缺点吗?我这样做的原因是看起来节点没有经常运行垃圾收集.有谁知道V8在节点中执行垃圾收集例程的频率如何?
谢谢!
我们在单独的进程中运行测试,我们的一些测试套件包含20多个文件.我们如何限制(而不是增加)Node.js进程使用的内存量小于300MB?如果我们不限制内存,我们可以使用高达20x500MB,大约10GB,这是太多的内存.
我可以在网上找到一些关于增加内存的文章,但我找不到任何关于限制每个进程内存的内容.
具体来说,我们使用核心child_process模块来创建子进程,我想我们需要一些标志或arg传递给cp来指定各种内存上限.
我正在运行一个带有 Node.JS 的 Socket.IO 服务器,它通常使用大约 400 MB 的内存,因为有很多数据被缓存发送到客户端。然而,几个小时后,它突然开始在大约 40 分钟内增长到 1.4 GB。有人告诉我使用 heapdump 来查找是否存在内存泄漏。
问题是堆转储结果只有 317 MB,而且里面没有任何异常,所以我一直在调试。我还使用 nodetime 运行它,它表示 V8 堆使用量约为 400 MB,但 V8 堆总大小为 1.4 GB。
如何找出剩余的 1 GB 来自哪里?