2011-12-20 17 views
5

Tworzę narzędzie do testowania obciążenia serwera. Tworzę wiele różnych wątków, które wysyłają oddzielne żądania do serwera. Wydaje się być ograniczony przez ChannelFactory. To wąskich gardeł na co rzeczywiste wywołanie usługi, na przykład:Maksymalna liczba połączeń w ChannelFactory

_proxy.MyServiceCall(...); 

próbowałem kilka różnych sposobów:

  • użyciu jednego statycznego ChannelFactory współdzielony przez wszystkich wątków
  • Tworzenie nowego kanału fabryka za wątku
  • Tworzenie nowej fabryki kanału za połączenie

Wszystko prowadzą one do dość podobnej wydajności. Wygląda na to, że globalna pula statyczna dostępnych połączeń jest używana przez fabrykę kanałów. Próbowałem już to sprawdzić, ale nie mogłem nic znaleźć. Czy wiesz więcej na ten temat? Czy uważasz, że moje przypuszczenie, że istnieje statyczna pula połączeń jest poprawna? Jeśli tak, to czy wiesz, jak to można skonfigurować?

Jest obecna konfiguracja aplikacji testowej:

<configuration> 
    <system.serviceModel> 
    <client> 
     <endpoint binding="wsHttpBinding" bindingConfiguration="SynchronizationServiceBinding" contract="My.Namespace.ISynchronizationService" name="ClientBinding"> 
     </endpoint> 
    </client> 
    <bindings> 
     <wsHttpBinding> 
     <binding name="SynchronizationServiceBinding" maxBufferPoolSize="2147483647" maxReceivedMessageSize="10485760"> 
      <security mode="Transport"> 
      <transport clientCredentialType="None"/> 
      </security> 
      <reliableSession enabled="false"/> 
      <readerQuotas maxArrayLength="1000000"/> 
     </binding> 
     </wsHttpBinding> 
    </bindings> 
    <serviceHostingEnvironment multipleSiteBindingsEnabled="true" /> 
    </system.serviceModel> 
<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/></startup> </configuration> 
+1

Czy masz skonfigurowane [dławienie] (http://msdn.microsoft.com/en-us/library/ms735114%28v=vs.90%29.aspx)? – oleksii

+0

Nie mam dostępu do konfiguracji serwera, ale wiem, że serwer jest w stanie przetworzyć wiele innych połączeń, a następnie narzędzie testowe jest obecnie w stanie wysłać, więc limit jest gdzieś w narzędziu do testowania. Dodałem konfigurację narzędzia do testowania. – kazvictor

Odpowiedz

4

Okazało się, że wszystko, co potrzebne do zrobienia jest dodać konfigurację System.Net connectionManagement:

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

Patrz: Element (Network Settings)

Należy zauważyć, że problem w tym wątku jest taki sam, jak w przypadku wystąpienia: IIS/WAS only handles two requests per client in parallel

+0

Dzięki! Próbowałem zrobić dokładnie to samo, co ty, i rozważałem stworzenie wielu procesów, aby ominąć to. – Mas

Powiązane problemy