因此,我尝试进行测试,看看 WebWorker 线程 ( https://github.com/audreyt/node-webworker-threads ) 可以在多核系统中使用 NodeJS 改善 CPU 密集型任务的程度。
实际上,我在工作时分配了一个核心的虚拟机上实现了此功能,但是当我在具有 4 个核心的家庭虚拟机上尝试它时,我在 15-20 个请求后遇到了段错误。
我的项目已在 https://github.com/WakeskaterX/NodeThreading.git 启动
我尝试消除一些片段来了解为什么会出现 SegFault,但即使只是返回静态数字也会在 15-20 个请求后引发 SegFault。
对于我正在运行的负载测试命令:
loadtest -c 4 -t 20 http://localhost:3030/fib?num=30
当它同步计算斐波那契数列时,它运行得很好,但是一旦它到达网络工作线程,它就会出现段错误核心转储。也许这与后端的 WebWorker-Threads 代码有关,但我主要想知道为什么会发生这种情况以及如何进一步调试或修复它,以便我可以在 Nodejs 中测试后台线程。
最佳答案
这是一个变量生命周期问题——一般来说,长时间运行的worker需要被分配到一个对象中,而不是一个词法变量;当作用域退出时,后者会被垃圾回收。
参见https://github.com/WakeskaterX/NodeThreading/pull/1获取解决问题的拉取请求。
关于javascript - WebWorker 线程高负载并发测试期间出现段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26812646/