考虑这个简单的服务器。它只是以文本形式返回请求的内容:
import {createServer} from 'http'
const server = createServer((req, res) => {
let data = ''
req.on('data', (chunk) => {
data += chunk
})
req.on('end', () => {
res.end(data)
})
})
server.listen(56690, 'localhost', () => {
global.console.log('server started')
})
当我发布到此服务器时,第一个请求需要~505 ms。后续请求只需几毫秒,只要我没有遇到keepAliveTimeout,从Node V8开始是5秒以上。也就是说,如果我在帖子后等待5秒钟,则下一个请求将再次采用> 500毫秒:
我知道节点服务器会在server.keepAliveTimeout
(或server.timeout
)之后销毁连接套接字。此外,我知道我可以通过调整这些设置来更改超时,例如server.keepAliveTimeout = 30000
将保持活动超时时间增加到30秒。
我也可以通过
完全停用超时server.keepAliveTimeout = 0
(docs)和server.timeout = 0
(docs)或timeout
事件而不关闭那里提供的套接字,即。 server.on('timeout', (socket)=>{})
或server.onTimeout(0, ()=>{})
。在这种情况下,套接字在超时时不会自动销毁(请参阅here:"但是,如果为服务器的超时事件分配了回叫功能,必须明确处理超时。")我的问题:
环境: