WCF呼叫TCP 10048錯誤

2021-06-02 01:22:32 字數 983 閱讀 9882

**,呼叫編寫了緩衝功能的wcf,看上去一切正常。結果沒多久忽然發現**幾乎不能訪問了,偶爾會可以用一下,然後又抽風了……把**的錯誤日誌拉下來一看,統統都是這個錯:

查了很多資料,也想了很多辦法,甚至用截包軟體分析了tcp資料流,最後發現,好白痴啊:當沒有設定過tcp引數的時候,windows伺服器預設定義使用者可用tcp埠號5000個,每個tcp連線的**等待時間是10分鐘。也就是說,每10分鐘只能有5000個wcf呼叫通道可供使用,1分鐘500個,1秒鐘8.3個。假設,每個頁面要使用4次呼叫(由於頁面都是用多個控制項拼接出來的,所以多次呼叫也很正常),就是說,每秒的頁面重新整理量不能超過2次。這還不堵塞,真是沒天理了。

解決方案:

1 修改使用者使用tcp埠上限

登錄檔:hkey_local_machine\system\currentcontrolset\services\tcpip\parameters

新增或修改dword項maxuserport,設定值為60000(ms建議exchangeserver的設定);

2 修改tcp執行緒自動**等待時間

登錄檔:hkey_local_machine\system\currentcontrolset\services\tcpip\parameters

新增或修改dword項tcptimewaitdelay,設定值為60(這裡的單位是秒,可以比1分鐘更短,視具體情況而定);

修改完這部分的登錄檔,是要重新啟動伺服器才起效的。

注意:這是改iis伺服器的登錄檔,而不是wcf伺服器的登錄檔。當然通常它們是一台伺服器,不過是一台伺服器的話,也沒必要這麼麻煩了吧。

經過這樣的修改,每秒可以支援1000個wcf呼叫通道生成,總算是不報錯了。--b

當然,如果可以的話,還是要盡量採用連線池方法,減少系統開銷。

總之目前是臨時修正掉這個錯誤了,讓做**的同事慢慢優化程式去。

WCF系列之WCF服務呼叫方式

wcf服務呼叫通過兩種常用的方式 一種是借助 生成工具svcutil.exe或者新增服務引用的方式,一種是通過channelfactory直接建立服務 物件進行服務呼叫。svcutil.exe是乙個命令列工具,位於 c program files microsoft sdks windows v7....

ExtJS呼叫WCF系列

在google找到了這兩篇文章http www.hausertechnologies.com wordpress p 33 和http www.hausertechnologies.com wordpress p 35 並經過我的琢磨,就琢磨出一些心得體會來,不敢獨享,所以貼出來讓園子裡喜歡extj...

ajax呼叫WCF服務

關於ajax呼叫wcf服務分為跨域和不跨域兩種方式,今天咱們先介紹下不跨域下的呼叫方法。demo是在vs2008寫的.經過測試與研究,發現ajax呼叫wcf服務必須滿足以下條件 1.wcf的通訊方式必須使用webhttpbinding 2.必須設定節點的值 3.服務的實現必須新增 aspnetcom...