簡體   English   中英

WCF NetTcpBinding超時問題-奇怪的行為

[英]WCF NetTcpBinding timeout problems - strange behaviour

我使用的綁定是NetTcpBinding(通過Internet),所有並發和maxconnection都設置為較高的值(4000 maxconnection,並發等),因此限制設置得很高,實際上是從wcf性能計數器獲得的服務器上,我看不到並發計數器中的任何一個都已滿,但是...但是我遇到超時的噩夢,描述如下:

“超時僅定義了您必須等待多長時間才能使服務實際失敗並給您帶來錯誤,但是修改此超時的值不會影響成功的機會。基本上,在此過程的第一秒內會發生某些情況。服務請求將問題弄糟了,它將永遠無法恢復。WCF不會為您神奇地重試網絡連接。很好,有時建立網絡連接無法正常進行,但是,如果您的超時時間為2小時,則必須等待整整2個小時都沒有機會工作,直到它最終確認它沒有工作並給您帶來錯誤。”

我從這個線程中獲取了上面的描述, 正是我遇到的問題。

操作員每天執行數千次相同的操作,有時甚至會發生超時錯誤,即使他們可以在沒有任何延遲的情況下快速執行相同的操作之后,也同時有人在同一台計算機上獲得超時與客戶的另一個實例,他們可以撥打電話,並且速度很快! 並且在服務器端檢查錯誤,因此服務實現中不會記錄任何內容,也不會在數據庫中存儲任何內容,因此該方法從未被請求調用,因此我絕對會在調用初始化期間考慮一些錯誤,也許是身份驗證,令牌化,爬行或該層中的某物,但我找不到任何流血的錯誤消息(也許啟用了wcf跟蹤?)。

無論如何,事實是我們得到了用普通的http客戶端-服務器請求以經典asp編寫的相同的舊軟件,並且即使我們正在談論相同的Internet連接,也永遠不會發生此問題,那么我該怎么想? 出現錯誤時,Internet Explorer會產生神奇的效果嗎? WCF有一些隱藏的配置,我可以設置該配置以改善此行為? 我可以說的是,我嘗試在WsHttpBinding中配置wcf服務,即使我們仍然遇到一些錯誤,這種超時接縫也永遠不會發生,但是即使連接相當與tcp連接相同,因為默認情況下,wshttpbinding配置為使tcp通道保持活動狀態,但是我仍然不明白為什么使用tcp會出現這種超時。

如果有人可以幫助我,我將非常感激!

謝謝!

問題與硬件不良有關,並且確實很難調試,而且使用wireshark(tcp sniffer)數據包也沒有顯示任何特定錯誤,我們發現了一些tcp重試,這可能是一種症狀,但實際上數據包只是停留在調制解調器路由器內部的某個地方,該路由器是電信調制解調器(倍耐力2號門),更換調制解調器/路由器后,問題完全消失了。

無論如何,我們發現通過http的wsHttpBinding,對於您無法控制的Internet連接更加可靠,並且您無法確定該站點上安裝了什么硬件。

希望這可以幫助其他人:)

我們遇到了相同的問題,但是使用了WsHTTPBinding。 您可以通過在循環中調用相同的操作來模擬上述情況,而無需顯式關閉客戶端連接。 為避免發生此問題,請檢查是否在每個操作完成時明確關閉客戶端連接,否則請求將堆積在服務器上。 以client.Close()顯式關閉客戶端。

這將消除服務器中請求的堆積,並提高應用程序的性能。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM