Linux

如何監控接受隊列的長度?

  • August 31, 2021

我有一個假設:有時 TCP 連接的到達速度比我的伺服器更快accept()。他們排隊,直到隊列溢出,然後出現問題。

我如何確認這種情況正在發生?

我可以監控接受隊列的長度或溢出的數量嗎?有沒有暴露在某個地方的櫃檯?

要檢查您的隊列是否溢出,請使用 netstat 或 nstat

[centos ~]$ nstat -az | grep -i listen
TcpExtListenOverflows           3518352            0.0
TcpExtListenDrops               3518388            0.0
TcpExtTCPFastOpenListenOverflow 0  0.0

[centos ~]$ netstat -s | grep -i LISTEN
   3518352 times the listen queue of a socket overflowed
   3518388 SYNs to LISTEN sockets dropped

參考: https ://perfchron.com/2015/12/26/investigating-linux-network-issues-with-netstat-and-nstat/

要監控隊列大小,請使用 ss 命令並查找 SYN-RECV 套接字。

$ ss -n state syn-recv sport = :80 | wc -l
119

參考: https ://blog.cloudflare.com/syn-packet-handling-in-the-wild/

引用自:https://unix.stackexchange.com/questions/328746