一台服务器最大能支持多少条 TCP 连接
TCP 连接不是只靠服务端端口区分,而是靠四元组:客户端 IP + 客户端端口 + 服务端 IP + 服务端端口
服务器监听 10.0.0.8:8080,下面三条连接可以同时存在:
192.168.1.10:50001 -> 10.0.0.8:8080
192.168.1.10:50002 -> 10.0.0.8:8080
192.168.1.11:50001 -> 10.0.0.8:8080
8080 并不会被第一条连接“占完”。只要四元组不同,Linux 内核就分得清。
线上遇到连接数问题,我一般先看这几项:
ulimit -n
cat /proc/$(pidof java)/limits | grep "open files"
ls /proc/$(pidof java)/fd | wc -l
ss -s
Linux 下,一条 TCP 连接至少占用一个文件描述符。如果 Java 进程的限制还是 1024,连接数稍微一上来,日志里就会出现:
java.net.SocketException: Too many open files

浙公网安备 33010602011771号