【问题标题】:node worker for loop slow between first and second iteration第一次和第二次迭代之间循环缓慢的节点工作者
【发布时间】:2022-01-15 01:58:32
【问题描述】:

我有一个包含for循环的方法,我有主进程和子进程调用这个方法。

20404 create:  2022-01-14 05:44:10.073
20404 create:  2022-01-14 05:44:10.075
20404 create:  2022-01-14 05:44:10.077
20404 create:  2022-01-14 05:44:10.077
send: 2022-01-14 05:44:10.078
send: 2022-01-14 05:44:10.079
send: 2022-01-14 05:44:10.079
16228 get  2022-01-14 05:44:10.081
11976 get  2022-01-14 05:44:10.081
9692 get  2022-01-14 05:44:10.082
11976 create:  2022-01-14 05:44:10.087
9692 create:  2022-01-14 05:44:10.087
16228 create:  2022-01-14 05:44:10.087
16228 create:  2022-01-14 05:44:10.113
9692 create:  2022-01-14 05:44:10.114
16228 create:  2022-01-14 05:44:10.116
11976 create:  2022-01-14 05:44:10.116
9692 create:  2022-01-14 05:44:10.117
16228 create:  2022-01-14 05:44:10.119
11976 create:  2022-01-14 05:44:10.121
11976 create:  2022-01-14 05:44:10.123

以上是日志,send是主进程向子进程发送指令的时候。

前四行从主进程中打印出来,每次迭代平均间隔2ms

get 是子进程获取指令的时候。

第一个数字是进程 ID。正如您在这部分看到的:

11976 create:  2022-01-14 05:44:10.087
9692 create:  2022-01-14 05:44:10.087
16228 create:  2022-01-14 05:44:10.087
16228 create:  2022-01-14 05:44:10.113
9692 create:  2022-01-14 05:44:10.114
16228 create:  2022-01-14 05:44:10.116

与其余时间间隔相比,这两次迭代之间的时间间隔很大。任何想法为什么会发生这种情况?

【问题讨论】:

  • 顺便说一句,我正在使用集群模块
  • 我要怎么做才能重现这个?
  • 我不确定你是否可以重现这个,但我在每次迭代中都进行异步调用。奇怪的是,只有前两次迭代的时间间隔很长。不确定这是硬件问题还是节点问题
  • 请显示Minimal, Reproducible Example 的相关代码并描述您如何创建多个请求。
  • 多少个集群进程?

标签: javascript node.js multithreading node-cluster


【解决方案1】:

当我第一次创建子进程时,第一次运行总是很慢,所以我必须发送一些虚拟数据让它运行几次,然后才能接收到实际数据。这样,当实际的请求数据进来时,迭代之间的时间间隔就变得很小且一致。可能只是节点问题

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-07-02
    • 2010-12-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-02
    • 1970-01-01
    相关资源
    最近更新 更多