阅读有关server.keepAliveTimeout的Node的文档:
如果服务器在触发保持活动超时之前收到新数据,它将重置常规的不活动超时,即server.timeout。
与server.timeout有什么不同?
听起来它们都与套接字超时有关,套接字超时只会在不活动时开始计时。
答案 0 :(得分:8)
Keep-Alive
是Http协议的标头部分。 Keep-Alive
标头将允许通过单个连接发送多个Http请求,而不是使用多个。
因此,设置keepAliveTimeout
将决定允许这些Keep-Alive
连接保持打开状态的时间。 timeout
决定服务器等待客户端响应的最长时间。
有关Keep-Alive
的更多信息,可以在这里找到:https://blog.stackpath.com/glossary-keep-alive/
答案 1 :(得分:3)
从nodejs的角度来看
server.timeout
超时(以毫秒为单位)。默认值:120000(2分钟)。 假定套接字超时之前的闲置毫秒数。
值为0将禁用传入连接的超时行为。
套接字超时逻辑是在连接上设置的,因此更改此值只会影响到服务器的新连接,而不会影响任何现有连接。
要更改默认超时,请使用--http-server-default-timeout
标志。
server.keepAliveTimeout
超时(以毫秒为单位)。默认值:5000(5秒)。
完成写入最后一个响应之后,在销毁套接字之前,服务器需要等待不活动的毫秒数,以等待其他传入数据。如果服务器在触发保持活动超时之前收到新数据,请it will reset the regular inactivity timeout
,即server.timeout 。
值为0将禁用传入连接上的保持活动超时行为。值为0会使http服务器的行为类似于8.0.0之前的Node.js版本,后者没有保持活动的超时时间。
套接字超时逻辑是在连接上设置的,因此更改此值只会影响到服务器的新连接,而不会影响任何现有连接。
换句话说:
server.timeout可以通知客户端服务器愿意保持连接多长时间 server.keepAliveTimeout在触发保持活动超时之前接收到数据的server.timeout重置
后来我意识到@Software Person也以另一种方式告诉了同样的事情,对吧!
答案 2 :(得分:2)
(pd.crosstab(df['hour'], df['product'])
.reindex(pd.RangeIndex(df['hour'].min(), df['hour'].max()+1), fill_value=0))
product desktop laptopt printer
14 0 1 0
15 0 0 1
16 0 0 0
17 1 1 0
是销毁套接字之前的时间,而keepAliveTimeout
是假定套接字已超时所需的时间。 timeout
破坏了套接字,keepAliveTimeout
仅“决定”它已断开连接。并且提到“如果服务器在触发保持活动超时之前接收到新数据,它将重置常规的不活动超时”,这很明显,就好像它从此套接字接收到新数据一样,这意味着它仍然有效,并且{ {1}}应该重置
答案 3 :(得分:2)
在请求完成或服务器未发送响应(即保持空闲/无效)之后,每个连接都会终止。
(例如,对于传入请求,服务器没有发回响应,在这种情况下,连接将保持打开状态,直到指定的超时时间为止)。
由于每个连接均在请求得到响应后终止,因此创建多个连接可以减少加载时间。这通过启用Keep-Alive来完成,从而避免了重复打开和关闭新连接的需要。
现在,保持活动超时使连接仅在以下时间保持打开状态: 在两个连续请求之间指定的时间。
(例如,如果keepalive-timeout为10毫秒,并且两个连续的请求花费超过10毫秒,则连接将关闭。此外,如果每个请求的超时为15毫秒,则它将等待第一个请求完成直到15秒,如果花费的时间超过该时间,就会发生超时。)
答案 4 :(得分:2)
server.timeout
是收到请求后允许的不活动时间(以毫秒为单位)(不必始终设置,默认为2分钟)
server.keepAliveTimeout
是最后一次响应后服务器将等待并保持连接打开的时间(以毫秒为单位)。 (不必总是设置,默认为5秒)
答案 5 :(得分:0)
我开始了赏金计划,但这是我的赏金计划。有人请告诉我这是否正确。
文档
服务器在完成最后一个响应的写入之后,在销毁套接字之前,它需要等待不活动的毫秒数,以等待其他传入数据。
说明
由于套接字已被重用,因此它们可以保持活动状态以用于其他请求。从完成写入最后一个请求的响应的最后一位起,它将启动计时器,如果在超时时间内没有其他请求进入,则套接字将被破坏。
文档
假定套接字超时之前的闲置毫秒数。默认情况下,服务器的超时值为2分钟,如果套接字超时,套接字将自动销毁。但是,如果将回调分配给服务器的“超时”事件,则必须明确处理超时。
说明
如果套接字在此期间未发送或接收信息,则套接字将被销毁。与server.keepAliveTimeout
的区别在于此超时不等待上一个请求完成才开始超时。如果没有发送或接收任何消息,它可能会在请求期间超时。
我不了解的
这里的“不活动”是什么意思?如果套接字接收到数据,它是否处于非活动状态?还是仅在写入数据时套接字才活动?