Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/40.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
node.js TCP回复时间不一致_Node.js_Sockets_Tcp - Fatal编程技术网

node.js TCP回复时间不一致

node.js TCP回复时间不一致,node.js,sockets,tcp,Node.js,Sockets,Tcp,我想测量从web服务器到达响应所需的时间。我知道,对于node,我无法获得准确的测量值,但我对一致的测量值非常感兴趣,因此我可以检测到我过去与主机提供商的高滞后峰值 这是我为此编写的简化代码(忽略那些日志调用): 但是,这段代码有一个奇怪的行为。当我运行它时,socket.write()和data事件之间的时间出乎意料地高,大约比实时时间多140ms。 但是,这是我不理解的,如果我在套接字关闭后再次使用相同的选项调用socket.connect(),或者如果我在5-15秒内重新运行脚本,我会得到

我想测量从web服务器到达响应所需的时间。我知道,对于node,我无法获得准确的测量值,但我对一致的测量值非常感兴趣,因此我可以检测到我过去与主机提供商的高滞后峰值

这是我为此编写的简化代码(忽略那些日志调用):

但是,这段代码有一个奇怪的行为。当我运行它时,
socket.write()
data
事件之间的时间出乎意料地高,大约比实时时间多140ms
但是,这是我不理解的,如果我在套接字关闭后再次使用相同的选项调用
socket.connect()
,或者如果我在5-15秒内重新运行脚本,我会得到正确的度量值。
以下是一个输出示例:

~/node $ node test.js  
23-3-2015 22:09:19 > DNS time: 12 ms.  
23-3-2015 22:09:19 > Connection time: 23 ms.  
23-3-2015 22:09:19 > Connected to 91.142.222.187  
23-3-2015 22:09:19 > Socket writing time: 6 ms.  
23-3-2015 22:09:20 > Request time: 167 ms  
23-3-2015 22:09:20 > Received FIN  
23-3-2015 22:09:20 > Socket closed   
~/node $ node test.js  
23-3-2015 22:09:24 > DNS time: 12 ms.  
23-3-2015 22:09:25 > Connection time: 23 ms.  
23-3-2015 22:09:25 > Connected to 91.142.222.187  
23-3-2015 22:09:25 > Socket writing time: 6 ms.  
23-3-2015 22:09:25 > Request time: 23 ms  
23-3-2015 22:09:25 > Received FIN  
23-3-2015 22:09:25 > Socket closed  
这发生在运行Debian的服务器以及运行Windows 8.1的计算机上

我当然可以每次运行两次测试,然后取第二个值,但这似乎有点浪费时间,我想知道引擎盖下发生了什么,以及如何让它一次正常工作


谢谢。

你应该只考虑少于250MS左右的时间,因为这是在TCP定时器的时间间隔内,例如延迟ACK。但是如果我记得正确的话,在这个特殊的情况下,唯一可以延迟的是FIN数据包,因为我收到了数据回复。as
setNoDelay
true
~/node $ node test.js  
23-3-2015 22:09:19 > DNS time: 12 ms.  
23-3-2015 22:09:19 > Connection time: 23 ms.  
23-3-2015 22:09:19 > Connected to 91.142.222.187  
23-3-2015 22:09:19 > Socket writing time: 6 ms.  
23-3-2015 22:09:20 > Request time: 167 ms  
23-3-2015 22:09:20 > Received FIN  
23-3-2015 22:09:20 > Socket closed   
~/node $ node test.js  
23-3-2015 22:09:24 > DNS time: 12 ms.  
23-3-2015 22:09:25 > Connection time: 23 ms.  
23-3-2015 22:09:25 > Connected to 91.142.222.187  
23-3-2015 22:09:25 > Socket writing time: 6 ms.  
23-3-2015 22:09:25 > Request time: 23 ms  
23-3-2015 22:09:25 > Received FIN  
23-3-2015 22:09:25 > Socket closed