本次更新主要是对 http 解码器 加入了 keep-alive 保活机制,让一个 tcp 连接可以被同一个 http 客户端复用,从而减少建立 tcp 连接的开销,在一定程度上提高了吞吐量。
如何使用
发起 http 请求的时候 加上这个请求头 [ connection:keep-alive ] ,一旦加了这个 服务端将会保持 tcp 连接,响应之后不再关闭。现在浏览器一般都是默认有的。
如果不想用这个机制,那么务必要传这个请求头 [ connection:close ] 或者干脆不传 connection 请求头。
如何回收连接
目前是第一版,还不是特别完美,回收连接主要靠两个点
- 系统的 tcp keepalive,这个是系统带的功能 如果 tcp 连接闲置过久 就会被回收
- 客户端主动断开,如果客户端断开了连接,那么服务端会收到一个 read 事件,读取数据的时候会返回-1,后端对这个-1 做了判断,一旦发现返回-1 就会关闭 tcp 连接
这个机制带来的吞吐量如何
在本机用 wrk 做了一轮测试,结果如下图所示
测试脚本如下
本机配置如下