http請求端快速關閉,導致服務端tcp大量等待

2021-09-23 20:31:31 字數 1143 閱讀 7056

最近專案上,有一次出現了某乙個ip下,出現了大量的tcp鏈結.

導致了服務端的其他請求,一直等待超時.

close_wait狀態的乙個很大可能性:當使用httpclient時,由於對方的伺服器突然中斷,導致在最後一步沒有收到返回資訊,就處於close_wait了。如果程式中沒有設定超時時間,那麼就會一直等待,不會結束close_wait狀態。

大量close_wait導致伺服器服務無響應

場景:最近併發較高,看到響應時間6s的時候,心裡咯噔一下,我記得我設定的超時時間是5s啊。

原來讀取超時時間沒生效,只生效了連線超時時間。

connectionpooltimeoutexception 獲取連線池連線超時

connectiontimeout:這定義了通過網路與伺服器建立連線的超時時間。httpclient包中通過乙個非同步執行緒去建立與伺服器的socket連線,這就是該socket連線的超時時間,此處設定為3秒。

將url改為乙個不存在的url,則會丟擲org.apache.commons.httpclient.connecttimeoutexception

sockettimeout:這定義了socket讀資料的超時時間,即從伺服器獲取響應資料需要等待的時間,此處設定為5秒。

這是個3.x的超時設定方法

4.3版本超時設定

httpget httpget=new httpget(「 get請求

requestconfig requestconfig = requestconfig.custom().setsockettimeout(2000).setconnecttimeout(2000).build();//設定請求和傳輸超時時間

httpclient.execute(httpget);//執行請求

以後再寫httpclient這兩個超時時間一定要加上,不加就很可能悲劇的了

java服務端http請求post 傳送資料量限制

align center 使用httpclient的post提交資料遇到的有關問題 align 使用httpclient的post方式提交資料,json字串,資料量大的時候,接收方結果死活接收不到。查詢發現是tomcat的預設配置導致的 tomcat6在預設狀態下最大的post請求是2m。可以採取兩...

AngularJs服務 http請求

http 本質是對xmlhttprequest物件封裝 開啟乙個鏈結 介面方式 soap restful 傳遞的資料可以是 key val key val 形式,這種形式叫formdata 當請求資料型別不一樣,後端在接收的時採取方法也不一樣 假如上述方式以php為例可以使用 post接收 requ...

HTTP服務端JSON服務端

最後更新日期 2014 5 18 author kagula 內容簡介 cppcms是個開源web開發框架,通過它可以很容易實現http服務和json服務,這裡介紹cppcms開發環境的搭建。寫乙個cppcms測試程式,它建立http服務,向瀏覽器返回hello,world頁面。cppcms依賴的一...