![](/img/trans.png)
[英]How to handle concurrent users making changes to data in Blazor webassembly
[英]How to configure WCF to handle lots of concurrent users?
我們正在開發一個利用WCF + SQL Azure進行數據訪問的多租戶系統。 基本上,我們在客戶端連接到的Azure中托管了WCF服務,然后此WCF服務向SQL數據庫查詢數據並將數據返回給客戶端。 其他所有工作都很好,但是客戶端和WCF之間的通道存在一些奇怪的性能問題。
似乎如果有足夠的並發用戶使用我們的服務,則WCF將開始阻止連接。 “足夠”是指大約20-30個用戶,它們每秒大約執行1個查詢,這反過來又應該是我希望WCF能夠毫無問題地處理的東西。 每個查詢在WCF服務中花費的時間少於1秒,通常為100到200ms。
我們認為WCF阻止連接的原因是:
WCF服務正在使用netTcpBinding,並配置了以下設置:
ServicePointManager.DefaultConnectionLimit = 1024;
netTcpBinding.MaxConnections = 1024;
netTcpBinding.SendTimeout = 5 minutes
netTcpBinding.ReceiveTimeout = 5 minutes
serviceThrottlingBehavior.MaxConcurrentCalls = 1024;
serviceThrottlingBehavior.MaxConcurrentInstances = 1024;
serviceThrottlingBehavior.MaxConcurrentSessions = 1024;
我不確定這是否重要,但是所有客戶端都位於同一IP地址之后。 此外,將為每個請求打開和關閉通道(主要是因為Azure在空閑1分鍾后會關閉連接,而我們還無法弄清楚如何以健壯的方式處理該連接)。
有任何想法嗎?
以下問題與此相關,但實際上並沒有提供答案: 如何擴展SQL Azure? SQL Azure vs WCF性能
在WCF中啟用診斷,它將幫助您發現問題。
再次查看您的限制配置:
http://msdn.microsoft.com/en-us/library/ms731379.aspx
http://msdn.microsoft.com/en-us/library/vstudio/ms735114(v=vs.100).aspx
http://www.codeproject.com/Articles/33362/WCF-Throttling
如果要傳輸大對象,請將默認的TransferMode更改為Streammed。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.