私は仮説を持っています:時々TCP接続は私のサーバーよりも早く到着しますaccept()
。キューがあふれるのを待つと問題が発生します。
このようなことが起こるかどうかを確認するには?
承認キューの長さまたはオーバーフローの数を監視できますか?カウンターが露出していますか?
ベストアンサー1
キューがオーバーフローしていることを確認するには、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/