http://social.microsoft.com/Forums/nl-NL/wcfzhchs/thread/3e79037b-afb5-402c-86d9-292779cd870d
大量用戶端應用程式同時調用一個伺服器上的服務,會不會使該服務承受不了?怎麼解決?
Een vraag stellen
- vrijdag 7 augustus 2009 2:57 victoryliwenbo 0 Points 0 Aanmelden om te stemmen 現在在學習WCF技術,遇到了一個問題:當超過2000多個用戶端應用程式同時調用一個伺服器上的服務,該服務能不能承受得了?如果承受不了,有沒有什麼方法可以解決或者優化?并且我還想知道下WCF技術能實作的最大通信量是多少?
- Reageren
- Citeren
Antwoorden
- vrijdag 7 augustus 2009 3:41 Frank Xu Lei SOA (MVP) 13.965 Points
1 Aanmelden om te stemmen Hi victory,
你提出的問題很好,這個問題,相信很多人學習了WCF程式設計以後,都會有這樣的疑問,而且很多人在多測試的時候,往往還會出現大于10個用戶端同時調用服務的時候,就會出錯。服務沒有相應,抛出Timeout 異常。
你的問題其實本質上是關于WCF處理大規模并發用戶端請求的問題。也就是WCF在處理大規模用戶端請求的時候,有沒有好的解決方案,或者表現。
處理大規模用戶端請求的,WCF确實能夠勝任,因為其本身已經提供了很好的解決機制。
關于并發用戶端請求,WCF通過設定最大并發連接配接數目、會話數目、并發服務執行個體數目來進行處理。
我測試的1000個并發請求,是可以順利相應的。而且的測試機器是普通的PC機器,XP pro系統。
涉及到大量請求的時候,可以考慮使用WCF的 ServiceThrottlingBehavior 屬性。
名稱 說明 MaxConcurrentCalls 擷取或設定一個值,該值指定整個 ServiceHost 中正在處理的最多消息數。 MaxConcurrentInstances 擷取或設定一個值,該值指定服務中可以一次執行的最多 InstanceContext 對象數。 MaxConcurrentSessions 擷取或設定一個指定 ServiceHost 對象可一次接受的最多會話數的值。 這裡我們設定一下服務的限流行為就可以了。具體如下:
serviceBehaviors >
< behavior name = " WCFService.WCFServiceBehavior " >
< serviceTimeouts transactionTimeout = " 00:01:00 " />
< serviceMetadata httpGetEnabled = " true " />
< serviceDebug includeExceptionDetailInFaults = " false " />
< serviceThrottling maxConcurrentCalls = " 1000 " maxConcurrentInstances = " 1000 " maxConcurrentSessions = " 1000 " />-->
</ behavior >
</ serviceBehaviors >
這裡1000可以修改,根據你的實際WCF服務需求量。服務激活類型和執行個體調用方式。然後進行調整。修改完畢以後,重新啟動服務,基本就正常了。
這個是三個屬性的測試例子。
于此問題本質上相關的問題很多,中文和英文論壇都有人讨論過。一下是這寫問題的連接配接:
http://social.microsoft.com/Forums/zh-CN/wcfzhchs/thread/155c87f0-a7d4-4c4e-b40b-6292d8731822
http://social.microsoft.com/Forums/zh-CN/wcf/thread/3a89a21d-76ca-4941-8cbe-c89afb5d163b
WCF分布式開發常見錯誤(20):TimeoutException was unhandled
以上之時WCF提供給我們的可以使用的配置屬性。你要想了解更深入的WCF底層線程模型和如何處理大量的用戶端資料互動請求。可以了解一下
IOCP在WCF裡的應用。
這個前段時間冰紅茶在我的部落格裡提問,我花兩周時間查找資料找出這個問題的答案。
你可以參考一下。這個才是WCF能應付大量并發請求的本質所在。上面隻是一些WCF的配置屬性,資料應用的範疇。
WCF熱門問題程式設計示例(3):WCF是否使用或者支援IOCP(IO完成端口)
經典技術文章翻譯(2)Does WCF use or Supports IOCP?WCF是否支援或者使用了IOCP完成端口。
應該很有參考價值。
希望對你的學習有幫助~
Frank Xu Lei--謙卑若愚,好學若饑
專注于.NET平台下分布式應用系統開發和企業應用系統內建
Focus on Distributed Applications Development and EAI based on .NET
歡迎通路老徐的中文技術部落格: Welcome to My Chinese Technical Blog
歡迎通路微軟WCF中文技術論壇: Welcome to Microsoft Chinese WCF Forum
歡迎通路微軟WCF英文技術論壇: Welcome to Microsoft English WCF Forum
- Als antwoord gemarkeerd door victoryliwenbo vrijdag 7 augustus 2009 6:07
- Reageren
- Citeren
Mijn forumkoppelingen
- Aanmelden bij Forums
- Forums Home
- Door forumgebruikers bladeren
Statistieken
- Gestart: 7-8-2009
- Laatste reactie: 7-8-2009
- Als nuttig beoordeeld: 1
- Reacties: 1
- Weergaven: 4.090
Hulp nodig bij Forums? (veelgestelde vragen) © 2012 Microsoft Corporation. Alle rechten voorbehouden.