新浪微博開放平台鏈結耗盡的情況分析

2021-09-01 15:34:15 字數 1613 閱讀 1498

[size=medium]可以看到我們設定了setdefaultmaxconnectionsperhost為8,setlinger為40000,經過查詢資料推測原因如下:

首先我們先要澄清幾個概念

1、對於tcp請求來說,tcp的客戶端服務端概念和http的不同,請求雙方,哪邊關閉請求,哪邊就是tcp客戶端,另一邊就為服務端。

tcp狀態圖中有乙個time_wait狀態,也叫2msl狀態,該狀態是為了保證在tcp客戶端發給tcp服務端最後乙個ack能順利到達的乙個等待狀態。若沒有time_wait狀態,tcp客戶端將直接進入closed 狀態,但有時由於網路原因,ack 響應丟失,tcp服務端收不到 ack,將重發fin,closed 狀態的tcp客戶端將返回rst ,而不是ack。將導致tcp伺服器異常。

也就是為了這個原因,tcp的客戶端將會把連線保留在2msl狀態一段較長的時間。在這段時間裡等待重發的fin。這裡需要注意的是,在2msl狀態的連線是不可以被重新使用。

我們上面的**設定了對單個站點只能有最大的連線8個,對於httpclient的應用,這8個連線只有8個埠,同乙個ip。若在2msl的時間裡,8個請求都被耗盡,那麼第9個請求就必須等待2msl狀態結束。

解決方案也很簡單,增加連線數 setdefaultmaxconnectionsperhost ,或減少2msl狀態(time_wait)setlinger 的時間。

[/size]

呼叫新浪微博開放平台介面

微博開放平台 3.準備資料 1 準備使用者驗證資料 string username t cnblogs.com string password cnblogs.com string usernamepassword username password username是你的微博登入使用者名稱,pas...

新浪和騰訊微博開放平台比較

api多樣性 請求引數 必選 型別及範圍 說明 source true string idfalse int64 string 根據使用者id int64 或者微博暱稱 string 返回指定使用者的最新微博訊息列表。該引數為rest風格引數,參見注意事項 user id false int64 使...

微博開放平台 發微博測試

搞了一下午的微博開放平台,真的有許多坑,不得不說給了我莫大的幫助 首先微博開放平台建立應用,因為我只調介面所以是微連線 網頁應用 個人開發者只能建立微連線 然後錄入表單基本資訊 這裡有開發者註冊的入口,沒註冊的要去註冊資訊 其中安全網域名稱要加上 不加http 坑 後面有用。好多必填項,尤其有好多要...