gpt4 book ai didi

node.js - aws 内核正在杀死我的 Node 应用程序

转载 作者:可可西里 更新时间:2023-11-01 11:34:20 27 4
gpt4 key购买 nike

问题:

我正在执行我的 mongoose 查询测试,但内核因 OutOfMemory 原因终止了我的 Node 应用程序。

流程场景:针对单个请求

/GET REQUEST -> READ document of user(eg.schema) [This schema has ref: user schema with its fields one] -> COMPILE/REARRANGE 从 mongodb 读取的查询输出 [这涉及过滤和循环data] 根据客户端要求的响应格式。 -> 更新此文档的一个字段并将其再次保存回 mongoDB -> 更新 REDIS -> 将响应 [上面编译的响应] 发送回请求的客户端

** 当 100 个并发客户执行相同操作时,上述操作失败...MEM - 非常低 (<10MB)CPU - 最大(>98%)

我能弄清楚的是读取和写入发生的速率,它通过排队所有请求阻塞 mongodb,从而延迟 nodejs,导致如此剧烈的 CPU 和 MEM 值,最终应用程序被内核杀死。

请建议我如何继续在此类流程中实现并发...

最佳答案

您现在遇到了 Linux OOM Killer .基本上,所有 linux 内核(不仅仅是 Amazon 的)都需要在 RAM 耗尽时采取行动,因此它们需要找到一个进程来终止。通常,这是请求最多内存的进程。

您的 3 个主要选项是:

  1. 添加交换空间。如果空间足够,您可以在根磁盘上创建一个交换文件,或者创建一个小型 EBS 卷,将其附加到实例,并将其配置为交换。
  2. 迁移到具有更多 RAM 的实例类型。
  3. 通过停止/终止未使用的进程或重新配置您的应用来减少实例的内存使用量。

对于短期调试来说,选项 1 可能是最简单的。对于生产性能,您需要考虑优化应用的内存使用或获取具有更多 RAM 的实例。

关于node.js - aws 内核正在杀死我的 Node 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37408034/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com