crawler http關閉連線

2022-05-06 03:30:08 字數 1392 閱讀 5346

1:ps aux|grep spider4test.jar

檢視埠 

2: lsof  -p [埠號]

在爬蟲執行期間如果看到 大量的 time_wait  wait_close 說明請求關閉阻塞【採用httpclient預設方法 ,其實沒有關閉掉,需要跑等3分鐘 才會關閉】 大量併發時   會有阻塞

3: 解決方法

最簡單方法【方法四:

**實現很簡單,所有**就和最上面的事例**一樣。只需要在httpmethod method = new getmethod("");加上一行http頭的設定即可 

method.setrequestheader("connection", "close"); 

其它方法:參考

備註:tcp狀態轉移要點

tcp協議規定,對於已經建立的連線,網路雙方要進行四次握手才能成功斷開連線,如果缺少了其中某個步驟,將會使連線處於假死狀態,連線本身占用的資源不 會被釋放。網路伺服器程式要同時管理大量連線,所以很有必要保證無用連線完全斷開,否則大量僵死的連線會浪費許多伺服器資源。在眾多tcp狀態中,最值得 注意的狀態有兩個:close_wait和time_wait。  

1、listening狀態

ftp服務啟動後首先處於偵聽(listening)狀態。

2、established狀態

established的意思是建立連線。表示兩台機器正在通訊

3、close_wait

對方主動關閉連線或者網路異常導致連線中斷,這時我方的狀態會變成close_wait 此時我方要呼叫close()來使得連線正確關閉

4、time_wait

我方主動呼叫close()斷開連線,收到對方確認後狀態變為time_wait。tcp協議規定time_wait狀態會一直持續2msl(即兩倍的分 段最大生存期),以此來確保舊的連線狀態不會對新連線產生影響。處於time_wait狀態的連線占用的資源不會被核心釋放,所以作為伺服器,在可能的情 況下,盡量不要主動斷開連線,以減少time_wait狀態造成的資源浪費。

目前有一種避免time_wait資源浪費的方法,就是關閉socket的linger選項。但這種做法是tcp協議不推薦使用的,在某些情況下這個操作可能會帶來錯誤。

5、syn_sent狀態

syn_sent狀態表示請求連線,當你要訪問其它的計算機的服務時首先要發個同步訊號給該埠,此時狀態為syn_sent,如果連線成功了就變為 established,此時syn_sent狀態非常短暫。但如果發現syn_sent非常多且在向不同的機器發出,那你的機器可能中了衝擊波或**波 之類的病毒了。這類病毒為了感染別的計算機,它就要掃瞄別的計算機,在掃瞄的過程中對每個要掃瞄的計算機都要發出了同步請求,這也是出現許多 syn_sent的原因。

關閉tcp連線

luolei localhost sudo netstat a grep ssh tcp 0 0 192.168.1.10 40278 com ssh established unix 2 acc stream listening 7565 tmp ssh uyvolk4882 agent.4882...

關閉TCP連線

從tcp協議角度來看,乙個已建立的tcp連線有兩種關閉方式,一種是正常關閉,即四次揮手關閉連線 還有一種則是異常關閉,我們通常稱之為連線重置 reset 首先說一下正常關閉時四次揮手的狀態變遷,關閉連線的主動方狀態變遷是fin wait 1 fin wait 2 time wait,而關閉連線的被動...

wcf 基礎連線已經關閉,連線被意外關閉

專案中在使用wcf返回資料時,發現一直報這個錯誤 基礎連線已經關閉,連線被意外關閉 經檢查後,發現 沒有什麼問題,只是乙個簡單的查詢,除錯的時候,發現返回的資料量比較大6000多個,後面在想,是不是資料量太大的原因,把返回的資料改少些,馬上就成功了!那ok了,起碼知道問題出在 出現這個問題主要是因為...