天天看點

Linux OS||不響應SYN總結背景 排查思路 排查過程最後那三闆斧

對外提供tcp服務的程序,在壓測時發現,tcp連接配接syn響應慢,甚至不響應。導緻無法正常接收新的請求,影響業務。

抓包分析:

Linux OS||不響應SYN總結背景 排查思路 排查過程最後那三闆斧

如上有大量的重傳,有時能夠正常的響應請求,有時就無法響應請求。

1、系統負載是否過高

2、是否有安全軟體(比如安全狗,安騎士等)

3、是否開啟防火牆

4、snat問題 

5、tcp相關參數:net.ipv4.tcp_max_syn_backlog\net.ipv4.tcp_syncookies\fs.file-max等

6、系統最大檔案打開數是否有限制

7、程序最大檔案打開數是否有限制

8、業務程式是否有相關的安全限制

9、協定棧異常

10、網絡安全裝置原因

12月2日增加:

1、由于服務端收包時checksum錯誤,核心會預設丢棄該封包;

2、列隊滿了

其中recv-q表示目前accept queue中的連接配接數量,send-q表示accept queue的最大長度。如上:可以看到程序的accept queue預設是128,因為受到系統net.core.somaxconn=128的限制。

根據排查思路中的幾個關鍵點,進行逐一仔細确認:

1、檢查系統負載是否正常

2、是否有安全軟體:關閉安騎士服務,檢查系統程序是否有其他安全軟體程序

3、關閉系統防火牆:排除由于防火牆安全配置導緻的問題。

4、snat問題:根據問題環境判斷,是否有該問題,如有根據案例方式處理。

5、檢查tcp相關參數:調大相關參數:

net.ipv4.tcp_max_syn_backlog\net.ipv4.tcp_syncookies\fs.file-max等

6、系統最大檔案打開數是否有限制:

主要關注open files資訊

7、檢視程序最大檔案打開數限制

程序的調整方法:

如果上述方法無法使用,或者不生效,則:

prlimit要2.6.36版本+才行

Linux OS||不響應SYN總結背景 排查思路 排查過程最後那三闆斧

8、業務程式是否有相關的限制(聯系使用者确認)

9、協定棧異常;嘗試初始化。

針對問題:tcp連接配接失敗

分析:netstat -s輸出中和連接配接失敗相關的參數

`202270382 invalid syn cookies received 

--- 三次握手ack包,syncookies校驗沒通過;

13700572 resets received for embryonic syn_recv sockets 

---syn_recv狀态下,收到非重傳的syn包,則傳回reset

1123035 passive connections rejected because of time stamp

---開啟sysctl_tw_recycle,syn包相應連接配接的時間戳 小于 路由中儲存的時間戳;

14886782 failed connection attempts 

--- syn_recv狀态下,socket被關閉; 或者 收到syn包(非重傳)

438798 times the listen queue of a socket overflowed

---收到三次握手ack包,accept隊列滿

438798 syns to listen sockets ignored 

---收到三次握手ack包,因各種原因(包括accept隊列滿) 建立socket失敗`

繼續閱讀