在node.js中管道流的性能如何?

Vip*_*ley 5 sockets stream node.js

我有一个用Node.js编写的TCP服务器.当在其服务器套接字上接收到套接字时,该进程将套接字传递给进程池.它要么分叉,要么重新使用先前分叉的进程.然后,它使用ChildProcess.send()将接收到的套接字传递给另一个进程.这样可以完全控制子进程的套接字.

我正在考虑采取不同的方法,但我担心潜在的性能权衡.我想通过stdin或unix域套接字或管道将套接字传递给子进程.在我的特定领域中,这种方法更可取的原因有很多,但我不会将这些问题与这些细节区分开来.

所以我想知道Node.js流上的pipe()方法的性能特征.流的管道是在系统级处理的,还是Node.js必须从一个流中读取每个字节并将其发送到目的地?有一些系统调用(即splice())提供某种级别的文件描述符零拷贝流.Node.js是使用某种类似的机制还是手动?

Phi*_*ien 0

我建议您阅读这篇博文,其中重点介绍了如何

当谈到流时,事情的速度取决于工作流程中最慢的流

另外,请阅读这个答案,解释如何在节点中对流进行基准测试。