TIME_WAIT过多造成什么后果?
导致无法开启新的连接,因为端口是有限的。
如果服务端有大量的close-wait的连接没有及时关闭,而客户端又不断地发送新的连接请求,这样就会打开的文件描述符数会不断增加。在linux系统中,一个进程最大可以同时打开的文件描述符是有上限的,ulimit命令可以查到。当达到这个上限时,服务端进程将无法新建socket来响应新的请求。
什么原因造成TIME_WAIT过多?
1、在高并发的场景下,会出现大量的 TIME_WAIT 连接。
2、大量的短连接存在
怎么解决TIME_WAIT过多问题?
- 客户端,调整短链接为长链接,HTTP 请求的头部,connection 设置为 keep-alive,保持存活一段时间
- 服务器端允许 time_wait 状态的 socket 被重用缩减 time_wait 时间,设置为 1 MSL(即,2 mins)