Nodejs如何充分利用多核CPU

Nodejs如何充分利用多核CPU,第1张

大家都知道, nodejs是单进程胡段单线程的,但是现并磨在的服务器基本都是多核的,这导致了服务器资源的浪费,而且一旦程序出现未知异常, 就会使整个进程奔溃,导致服务不可用,那我们该如何来改善这样的情况呢?

注意 nodejs在底层使用了libuv库来实现多线程IO *** 作,其对用户不可见。但是nodejs的主程序还是运行在单进程单线程上。

运行程序并且记录到server.log可以看到

由于我的电脑是8核的,所以cluster会fork出来8个nodejs进程

可以看出来每个进程的nodejs接裤蔽誉收到的请求很平均, cluster为我们自动做了负载均衡

这时,会在/tmp目录下生成 /tmp/perf-3456.map , 即 perf-进程id.map

perf record 会将记录的信息保存到当前执行目录的 perf.data 文件

使用 perf script 读取 perf.data 的 trace 信息写入 perf.stacks。

--color=js 指定生成针对 JavaScript 配色的 svg,即:

用浏览器打开 flamegraph.svg

生成 cpuprofile-xxx.cpuprofile 文件,该文件的内容其实就是一个大的 JSON 对象

Chrome 自带了分析 CPU profile 日志的工具。打开 Chrome ->调出开发者工具升袜带(DevTools) ->单击右上角三个点的按钮 ->More tools ->JavaScript Profiler ->Load,加载好凯刚才生成的 cpuprofile 文件。

首先全局安装 flamegraph 模块:

运行以下命令将 cpuprofile 文件生成吵芦 svg 文件:

用浏览器打开 cpuprofile.svg,如下所示:

我并没有首老尝试过用Node去CPU密集计算,所以不乱作评价。袭渣

猜测大概是2点:

1.Node还没有简单易用的多核计算接口。Cluster并不是那么好用。

2.Node的单核效率虽然比传统脚本语言高,但是和C,拍芹悄C++,Java比并没有优势。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12379671.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-25
下一篇 2023-05-25

发表评论

登录后才能评论

评论列表(0条)

保存