如果我们每次需要写入或读取数据库时都必须连接数据库(redis)。一些操作后关闭连接。因为连接很频繁(假设情况必须先连接然后关闭)。结果,太多的TIME_WAIT状态套接字留在内核中。就像是 :
`netstat -vatnl | grep 6379 tcp 0 0 127.0.0.1:6379 0.0.0.0:* 听 tcp 0 0 127.0.0.1:36476 127.0.0.1:6379 TIME_WAIT tcp 0 0 127.0.0.1:37193 127.0.0.1:6379 已建立 tcp 0 0 127.0.0.1:36480 127.0.0.1:6379 TIME_WAIT tcp 0 0 127.0.0.1:36479 127.0.0.1:6379 TIME_WAIT tcp 0 0 127.0.0.1:36472 127.0.0.1:6379 TIME_WAIT tcp 0 0 127.0.0.1:36457 127.0.0.1:6379 TIME_WAIT tcp 0 0 127.0.0.1:36460 127.0.0.1:6379 TIME_WAIT tcp 0 0 127.0.0.1:36481 127.0.0.1:6379 TIME_WAIT`
- 我们可以在客户端重用端口吗?使用 sock opt SO_REUSEPORT 在 connect() 之前调用 bind()
sysctl -w net.ipv4.tcp_timestamps=1 sysctl -w net.ipv4.tcp_tw_recycle=1
<
这种方式确实有很大帮助。但是我仍然可以看到许多TIME_WAIT状态- 设置套接字选择 SO_LINGER
l_onoff=0 ; l_liger=1
或其他方式?