javascript - WebWorker 线程高负载并发测试期间出现段错误

标签 javascript multithreading node.js

因此,我尝试进行测试,看看 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/

相关文章:

javascript - 如何从Grails中的JSON对象获取数据库变量

javascript - 使用空格将变量从 html 传递到 javascript

.net - 使用 WinForms 进行 MVP 异步调用的最佳实践

android - 使用独立线程 Android 在 Canvas 上绘图

c# - IE10 Chakra JScript 引擎是否可以从 C# 独立访问?

javascript - 如何让表格行固定在左边

c++ - UDP/TCP 服务器中监听器线程与工作线程的比率?

linux - 如何在 gulp 中获取当前文件夹名称?

javascript - Nodejs与C++程序通信?

node.js - sequelize.js - 按 id 查找并返回结果