我有一个用Node.js编写的TCP服务器。 当在其服务器套接字上收到套接字时,进程会将套接字传递到进程池。 它要么分叉,要么重用以前分叉的进程。 然后,它使用 ChildProcess.send(( 将接收到的套接字传递给另一个进程。 这为子进程提供了对套接字的完全控制。
我正在考虑采取不同的方法,但我担心潜在的性能权衡。 相反,我想通过 stdin 或 unix 域套接字或管道将套接字管道传输到子进程。 在我的特定领域,这种方法更可取的原因有很多,但我不会用这些细节来阐述这个问题。
所以我想知道 Node.js 流上的 pipe(( 方法的性能特征。 流的管道是在系统级别处理的,还是 Node.js 必须从一个流中读取每个字节并将其发送到目的地? 有一些系统调用(即 splice(((提供了一定程度的文件描述符零拷贝流。 Node.js是否使用某种类似的机制还是手动的?
我建议阅读这篇博文,它强调了如何
说到流,事情的速度取决于最慢的速度。 工作流中的流
另外,请阅读此答案,解释如何在节点中对流进行基准测试。