首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> ASP.NET 基礎 >> 關於ASP.NET

解決 HttpWebRequest GetResponse 偶發超時與當機的三大關鍵方案

     編輯:關於ASP.NET

在開發呼叫外部介面的功能時,常需根據使用者指定的 URL 以 POST 方式傳送資料。早期測試一切正常,但後續在未修改程式碼的情況下,GetResponse 卻頻繁出現超時甚至直接當機的情況。經過排查與整理,主要成因與解決辦法歸納為以下三點:

1. 提高預設連線上限 DefaultConnectionLimit

系統預設的 ServicePointManager.DefaultConnectionLimit 僅為 2,若並發請求較多極易造成連線排隊導致超時。建議在程式啟動時將其調大,例如:

System.Net.ServicePointManager.DefaultConnectionLimit = 50;

2. 在建立請求前強制進行垃圾回收

長時間運行的應用程式可能累積大量未釋放的物件,影響網路連線的建立。在 HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url) 之前加入:

System.GC.Collect();

可釋放記憶體壓力,降低超時機率。

3. 確實關閉並釋放 HttpWebRequest 與 HttpWebResponse

每次使用完畢務必呼叫 Close() 並將參考設為 null,確保底層連線歸還連線池:

req.Close();
req = null;

resp.Close();
resp = null;

完整程式碼範例與更深入的延遲分析可參考原文連結。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved