【问题标题】:node.js hangs other programs on my macnode.js 在我的 Mac 上挂起其他程序
【发布时间】:2015-07-17 01:30:36
【问题描述】:

我对 Node 和 javascript 比较陌生。我正在运行一个执行繁重的网络 api 调用并处理结果的程序。我遇到的是,我的节点代码使我的 Mac 上运行的其他程序(Outlook、Chrome 等)无法响应,以至于我什至无法强制退出这些程序,不得不硬重启我的机器。

知道为什么会这样吗?我认为 node.js 有点沙盒,不应该影响其他程序。节点是否用完了所有可用的套接字?

【问题讨论】:

    标签: node.js


    【解决方案1】:

    似乎我找到了 node.js 本身使用大量 CPU 和内存的原因。我有一些代码处理数千行用户位置并计算距离。这似乎非常昂贵并且对节点有很大的影响。我已将该代码移到 process.nextTick() 中,它不再挂起其他程序。

    我仍然不明白为什么节点挂起,为什么它也会挂起我的 mac 上的其他程序。

    【讨论】:

    • 如果您有一个进程占用了您计算机上的所有 CPU/内存,您可以预期其他进程会受到影响。 Mac OS X 不一定会在 RAM/CPU 使用方面对进程进行沙箱处理,尽管您确实可以选择(通过 ulimit shell 命令)设置一些限制。
    • 感谢您的评论。但是我的 Mac 有 i7 处理器,我认为它有 4 个内核?节点事件循环只是一个单线程。我不确定节点使用了多少其他线程。所以我很惊讶它使用了所有 4 个内核。
    • 我认为内存占用将是最大的问题。在某些时候,物理 RAM 已经用完,您的 Mac 开始交换,使其变慢。
    猜你喜欢
    • 2012-12-07
    • 2014-10-07
    • 1970-01-01
    • 2015-04-08
    • 2015-04-09
    • 2018-05-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多