1. 程式人生 > >淺談長連接keepalive和套接字重用reuse對高並發的影響

淺談長連接keepalive和套接字重用reuse對高並發的影響

細節 並不會 rift 兩個 千萬 也會 keepalive 是否 sdk

做采集系統有兩年了,第一年主要的設計和代碼邏輯是別人寫的。但是問題很多。

第二年真正由我接手後,修復了大量的業務邏輯。

遇到的一個核心問題就是數據丟失。最近客戶也在問我采集上報的機制,是否使用長連接?我自己聯想到套接字的reuse問題。

由於所作的這個項目有兩千萬的用戶量,高峰期tcp連接達到15000到30000並發是每天都會發生的事情。

開始懷疑是這個機制設計得有問題。

再仔細回憶之前學C套接字時的資料,reuse機制是服務端的監聽端口時用到的參數,並不會影響客戶端SDK的斷開重連,實際修改thrift源碼測試發現也是如此。結論是reuse只影響服務端,不影響客戶端的tcp連接。

而keep alive是http1.1的機制,它是一個http數據包的報頭。帶有這個報頭的http通信就會維持長連接,數據沒有數據通信,也會發送帶有keepalive報頭用來保活的空連接數據包。而我所用的采集系統使用TCP連接。

所以數據丟失跟這兩個細節無關。

淺談長連接keepalive和套接字重用reuse對高並發的影響