使用WebWorker线程进行高负载并发测试时的分段错误

时间:2014-11-08 01:16:44

标签: javascript multithreading node.js

因此,我尝试进行测试,看看WebWorker Threads(https://github.com/audreyt/node-webworker-threads)可以在多核系统中使用NodeJS改进CPU密集型任务。

我实际上是在工作时分配了一个核心的VM上工作,但是当我在具有4个核心的家庭虚拟机上尝试它时,我在15-20个请求后收到了分段错误。

我已在https://github.com/WakeskaterX/NodeThreading.git

处完成了我的项目

我尝试过消除碎片,看看为什么我会收到SegFault,但即使只返回静态数字也会在15-20次请求后抛出SegFault。

对于loadtest命令,我正在运行:

 loadtest -c 4 -t 20 http://localhost:3030/fib?num=30

当它同步计算Fibonacci序列时,它运行得很好,但是一旦它击中网络工作者它就会出现Segmentation Fault Core Dumps。也许这与后端的WebWorker-Threads代码有关,但我主要想知道它为什么会发生以及我如何进一步调试或修复它以便我可以在nodejs中测试背景线程。 / p>

1 个答案:

答案 0 :(得分:1)

这是一个可变的生命周期问题 - 通常,需要将长时间运行的worker分配给一个对象,而不是一个词法变量;当范围退出时,后者会被垃圾收集掉。

请参阅https://github.com/WakeskaterX/NodeThreading/pull/1了解解决问题的拉取请求。