目錄2. 背後的原理
3. 命令
4. 參考
線上出現大量的close_wait連線問題,多達2萬多個,新的連線很多建立錯誤,通過以下命令可以檢視:
root@vm-node-72-41 ~]# netstat -lanp |grep close_wait |wc -l
26304
aws sdk 底層採用 libcurl 庫傳送http請求,維護有乙個 curl 的控制代碼池,最大目前設定為 cpu數目*2。
http請求採用長連線的形式,每次http請求,取乙個控制代碼,用完之後,呼叫 curl_easy_reset()函式重置後,放回控制代碼池。
如果在下次使用該控制代碼前,aws 服務端關閉了該連線,就會產生 close_wait 狀態的 tcp 連線;
存在 aws client 控制代碼洩露,後台輪詢 login, 導致 client 控制代碼洩露。
什麼是 tcp 連線的 close_wait 狀態呢?這要從 tcp 連線的3次握手和4次揮手說起。
參考: tcp連線全過程各種狀態詳解
示意圖:
tcp 連線的抓包示意圖:
參考: 伺服器time_wait和close_wait分析和解決辦法
檢視tcp連線狀態
[root@node7132 ~]# netstat -n | awk '/^tcp/ end '
close_wait 14
established 637
time_wait 4
HTTP長連線和WebSocket長連線的區別
要理解http長連線和websocket長連線的區別,首先要理解一下什麼是http的長連線和短連線。首先需要消除乙個誤解 http協議是基於請求 響應模式的,因此客戶端請求後只要服務端給了響應,本次http請求就結束了,沒有長連線這一說。那麼自然也就沒有短連線這一說了。所謂的http分為長連線和短連...
http 長連線 短連線
http短連線 非持久連線 是指,客戶端和服務端進行一次http請求 響應之後,就關閉連線。所以,下一次的http請求 響應操作就需要重新建立連線。http長連線 持久連線 是指,客戶端和服務端建立一次連線之後,可以在這條連線上進行多次請求 響應操作。持久連線可以設定過期時間,也可以不設定。http...
Http長連線配置
客戶端與nginx的長連線 keepalive timeout 客戶端與nginx之間的長連線超時設定,當乙個連線的最後一次資料傳輸至今超過了這個時間,那麼當前連線就會被服務端主動關閉。預設值60s,因此客戶端與nginx預設是長連線的。keepalive requests 也是客戶端與nginx的...