【问题标题】:Node.js with V8 suitable for limited memory device?带有 V8 的 Node.js 适用于内存有限的设备?
【发布时间】:2014-02-08 22:07:22
【问题描述】:

想知道带有 V8 引擎的 node.js 是否适合部署在内存有限的设备(例如 256mb)上并与其他进程并行运行。

我读到它会连接机器的资源。有没有办法限制 V8 引擎本身的内存和处理使用?

【问题讨论】:

  • Respberry Pi 上的 NodeJS?这可能很有趣。
  • 您能详细介绍一下这款设备吗?哪种 CPU 架构、磁盘类型(固态/旋转)、是否还需要运行 GUI 等。
  • 我在root android上运行它,它也需要GUI。所以,最好是限制内存。

标签: node.js v8


【解决方案1】:

假设没有运行其他占用大量内存的软件,256 MB 的 RAM 足以运行 Node.js(例如在 Linux VPS 实例上)。 Node 有 --max-stack-size 参数用于限制内存使用。

Node 的单线程事件服务器模型通常可以有效利用资源,但由于其 JIT 架构,V8 可能会使用比 PHP 或 CPython 等解释/字节编译实现更多的内存(同时提供卓越的性能)。此外,为了利用多个 CPU 内核,必须运行多个 Node.js 进程(相对于内存共享线程),这有效地增加了内存使用量,但这一限制也适用于其最受欢迎的竞争对手。

对于“与其他进程并行运行”“挂接本机资源”,运行Node.js进程并没有什么特别之处(除了常见的多核问题);它的行为类似于任何用户态程序。您可以在操作系统级别降低 Node.js 进程的优先级(例如使用nice),但根据您的设备/应用程序,I/O 可能会成为一个更大的问题。

纯粹从技术/效率的角度来看,当需要真正的多处理支持和高并发性时,Erlang 可能是高级语言更理想的选择。

【讨论】:

    【解决方案2】:

    64MB 的 RAM 对于 V8 和 Node.js 来说足够了

    见“Compiling Node.js for Arduino YÚN” 还有“installing Node.js on Arduino YÚN”。

    Arduino YÚN 使用 64MB RAM 运行 linux。

    【讨论】:

    • “全栈 Node.js 对云来说太过分了,能做的只有非常简单的脚本”见forum.arduino.cc/index.php?topic=193765.15
    • 当然,在这样的设备上你是非常有限的,但是“只有非常简单的脚本”也是非常相对的。在我的实验中,具有 YÚN 一半 RAM 的 TL-MR3020 正在执行以下操作: * 提供 HTML5 Web 应用程序; * 每 200 毫秒在 WebSocket Secure 上接收 JSON 消息; * 每 50 毫秒在 WebSocket Secure 上发送 JSON 消息; * 每 40 毫秒在 UDP 上发送和接收 JSON 消息; * 在文本文件上记录操作。所有这一切都适用于 2 或 3 个客户端,但消息会变得有点慢。
    • @MatteoT。您是否有关于如何在该设备上设置 Node.js 的链接/指南?是使用 OpenWRT 吗?
    • 我下载了Arduino YUN社区构建的包并安装在OpenWRT上。我还使用了 U 盘来扩展路由器的内存
    【解决方案3】:

    BeagleBone 有 256MB RAM(在正常配置下,没有虚拟内存),它运行 node.js 非常好。

    【讨论】:

      猜你喜欢
      • 2011-11-03
      • 2011-09-11
      • 1970-01-01
      • 2012-02-27
      • 2018-06-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多