大家都知道, 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比并没有优势。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)