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