TCP连接中有许多操作系统提供的调节参数,在不同的使用场景中修改对应的参数,可以TCP性能。
可以将性能提高分为下面三个部分:
调整SYN报文的重传次数。
//控制SYN重传次数,默认是5次
tcp_syn_retries;
一般第一次握手的SYN发出后没有回复,发起连接方会再次发送SYN,这样重复五次。
总耗时是 1+2+4+8+16+32=63 秒,大约 1 分钟左右。
当在网络情况比较好的情况下(内网通信),适当减少重传次数,今早将问题暴露给应用层。
调整SYN半连接队列的长度。
想要增大半连接队列,不能单独的增大tcp_max_syn_backlog,还要同时增大somaxconn和backlog(也就是增大accept队列)。
同时可以开启syncookies。
调整accept全连接队列的长度。
accept 队列的长度取决于 somaxconn 和 backlog 之间的最小值,也就是 min(somaxconn, backlog),其中:
调整SYN+ACK的重传次数。
//控制SYN_ACK重传次数,默认是5次
tcp_synack_retries
绕过三次握手。
TCP Fast Open,需要客户端和服务端同时开启才可以。除了第一次连接后续连接服务端可以再验证cookie后直接发送数据,从而减少一次握手时间。
关闭连接的方式有两种。
close()函数和shutdown()函数的区别?
以上内用和图片参考小林coding
就是这事,散会!