簡體   English   中英

如何通過TCP增加.NET Remoting使用的線程數?

[英]How do you increase the number of threads used by .NET Remoting over TCP?

我們正在嘗試通過TCP增加.NET Remoting使用的線程數。 我們嘗試更改ThreadPool.SetMinThreads,但是我們的壓力測試顯示.NET Remoting只能處理大約100個並發請求。 (但這不是硬限制)。 在任務管理器中,我們可以看到我們的遠程處理服務器進程線程數從11增加到大約80,然后在壓力測試后下降到11。 我們正在運行ASP.NET 4.0應用程序。

總結一下。 遠程服務器由IIS服務和遠程客戶端由IIS托管。 要進行壓力測試,請使用Apache Bench調用遠程客戶端調用遠程服務器。 您發現遠程服務器處理的並發請求不超過100個,盡管您增加了遠程服務器上線程池中的最大線程數。

如果我所說的都是真的,我認為這里缺少一件事,即IIS也有一個可用於處理請求的線程限制。 您可以從Apache Bench向遠程客戶端發送1000請求,但僅限於,例如,其中100個將同時處理。 我懷疑這可能是一個原因。

為了增加IIS的線程數,我建議您嘗試:

  • 檢查配置(請參閱此問題 )。
  • 嘗試在IIS上使用SetMinThreads

我方的最后一點評論是你必須記住,線程池中線程數量太少,線程數量太多也不好。 兩種情況都會影響性能。

檢查SetMinThreads的返回值

如果指定負數或大於活動線程池線程的最大數量(使用GetMaxThreads獲取),則SetMinThreads將返回false並且不會更改任一最小值。 鏈接

確定瓶頸是線程,而不是網絡連接..? 默認情況下,.net每個遠程IP可用的插槽數量相當有限。 這適用於遠程處理,http(WCF,Web服務客戶端)等。

您可以在app config / web.config中的system.net/connectionManagement下覆蓋此項,如果這是您所看到的,例如:

<configuration>
...
  <system.net>
    <connectionManagement>
      <add address="*" maxconnection="1000"/>
    </connectionManagement>
  </system.net>

有關該配置設置的更多詳細信息,請訪問: https//msdn.microsoft.com/en-us/library/fb6y0fyc%28v=vs.110%29.aspx

暫無
暫無

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

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