看起来我们在繁忙的网络服务器上有一堆 tcp 连接,这是 ss -s 的输出:
Total: 366 (kernel 1037)
TCP: 72108 (estab 130, closed 71964, orphaned 0, synrecv 0, timewait 71962/0), ports 46158
Transport Total IP IPv6
* 1037 - -
RAW 0 0 0
UDP 12 8 4
TCP 144 111 33
INET 156 119 37
FRAG 0 0 0
如何最好地调整此服务器上的 TCP 设置以防止出现问题/最大化性能?我最近刚刚将 net/ipv4/ip_local_port_range 从默认值增加到“1024 65000”
答案1
Linux 上的 TCP/IP 堆栈已经非常优化,通常不需要任何操作。例如,设置本地端口范围以获取一些额外端口几乎肯定是不需要的。
就时间/等待时间不好而言,这只是使用 tcp 的一部分。如果您确实希望减少处于该状态的端口数,请更改 tcp_fin_timeout 或 tcp_keepalive 值。尽管您真的不应该更改这些值,除非您出于某种原因确实需要这样做。
就端口耗尽而言,每个端口都以源端口和目标端口为关键。除非您正在执行 nat 之类的操作,否则您可能不会用尽源/目标对。
回应你关于使用 memcached 时连接丢失; 您可以增加工作线程数和积压队列长度。问题更可能出在 memcached 上,而不是可用端口数上。