darwin伺服器大量出現close wait

2021-08-13 07:34:20 字數 713 閱讀 4727

一 我們先來複習一下tcp的11種狀態機以及相應的應用層函式

1 closed 已經完全關閉的狀態

2 listen 監聽狀態,一般指監聽socket    listen

3 syn send 傳送了syn 連線請求之後,還沒有收到應答前。   connect

4 syn recved,收到了syn資料報,但是還未回應syn + ack的時候 connect

5 establish tcp三次握手完成之後

6 fin_wait1 establish收到對端的fin包

7 fin wait2 fin wait1 狀態情況下回應了對端fin

8 closing 在fin wait1情況下,本地關閉socket主動發生了fin包

9 time wait在closing狀態下,收到了對端的ack後 ,主要是為了等fin包能安全達到對端

10 close wait 對端關閉了socket,本端沒有響應(一併關閉socket)

11 closed 徹底斷開了

二 easydarwin在客戶端不斷連線,斷開的情況下。會出現大量的close wait狀態的socket連線。

顯然是客戶端斷開了socket,但是easydarwin還沒關閉socket。

三 修改點

在rtspsession會話的主函式run中,在readrequest函式返回錯誤的時候,return -1;退出主迴圈,並且銷毀會話。

用Darwin開發RTSP級聯伺服器

模組設計 darwin系統已經具有了我們所需的一定條件 rtspclient客戶端實現 rtp分發流程 reflectorsession 我們需要實現 darwin拉模式 模組,我們定義此模組名稱為qtssondemandrelaymodule,意為只有在有需要的時候,才會 darwin與源端用於互...

在Linux下安裝Darwin 流伺服器

摘要 本文介紹在linux下安裝darwin 流伺服器的方法和步驟 一 darwin簡介 darwin 流伺服器是蘋果公司quicktime流伺服器的opensource版本,是完全基於quicktime流伺服器 開發的,其實現了一種在網路上傳播quicktime流的機制。darwin具有以下一些特...

減少linux伺服器大量TIME WAIT

將專案部署到linux上後,發現系統有大量的time wait狀態的鏈結,大量time wait狀態的鏈結不能被及時 導致的結果就是系統可用socket被耗盡而無法處理新的請求。對於http協議的短連線請求,應該要防止產生大量的time wait,我們可以通過設定linux網路引數來達到目的,步驟如...