Увеличение максимального числа одновременных соединений для веб-службы в IIS7 (нагрузочное тестирование) - PullRequest
7 голосов
/ 29 марта 2012

Я пытаюсь написать простой тестер нагрузки для одного из наших веб-сервисов, который обслуживается через IIS7. Я запускаю загрузку потоков (в виде задач), которые вызывают веб-службу как веб-ссылку.

Несмотря на то, что все потоки запускаются, только 2 одновременных соединения из приложения могут обрабатываться веб-службой.

Я знаю, что по спецификации количество одновременных подключений ограничено 2 на пользователя . Ради этого тестера нагрузки, который, как мне кажется, является одним из пользователей, Я хотел бы открыть много одновременных подключений.

Я попытался добавить следующее в web.config веб-службы.

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

Моя настройка следующая:

Веб-служба расположена по адресу http://devserver/MyWebServiceApp/MyWebService.asmx,, где MyWebServiceApp настроен как приложение.

Веб-метод может рассматриваться как нечто тривиальное, которое просто ждет, скажем, 20 секунд, прежде чем вернуть ответ (что позволяет легко видеть, что в каждый момент времени открыто только 2 соединения).

Простейшая форма кода нагрузочного тестера выглядит следующим образом:

Imports System.Threading.Tasks

Module SuperBasicLoadTester

    Sub Main()
        ThreadLauncher(10)
    End Sub

    Sub ThreadLauncher(ByVal numberOfThreads As Integer)
        Dim tasks(numberOfThreads - 1) As Task
        For index As Integer = 0 To numberOfThreads - 1
            tasks(index) = Task.Factory.StartNew(AddressOf SendRequest)
        Next
        Task.WaitAll(tasks)
    End Sub

    Sub SendRequest()
        Dim myWebServiceCaller As New MyWebService.ServiceMethods
        myWebServiceCaller.Url = "http://devserver/MyWebServiceApp/MyWebService.asmx"
        Dim response As String = myWebServiceCaller.MyWebServiceMethod("Some string passed to the web service method")
    End Sub

End Module

Я пытался указать другое программное обеспечение для нагрузочного тестирования (например, soapUI ) на веб-сервис и обнаружил ту же проблему.

Буду благодарен за любые указания относительно того, как увеличить этот лимит соединения (для целей тестирования).

Правки:

  • Я должен добавить, что в окне веб-службы работает Windows 2008 R2.
  • Также я запустил SoapUI и мой загрузчик одновременно может запрашивать только 2 соединения каждое (т.е. всего 4).

Заранее спасибо,

Али

Ответы [ 2 ]

6 голосов
/ 30 марта 2012

Я нашел ответ здесь: Несколько одновременных вызовов WCF от одного клиента к Сервису

Проблема была с моим клиентом, а не с принимающей службой.Мне нужно было установить System.Net.ServicePointManager.DefaultConnectionLimit с инициализацией клиента.

2 голосов
/ 29 марта 2012

Существует общесистемное ограничение TCP-соединения, в основном оно используется для остановки TCP, использующего слишком много ресурсов на вашем компьютере.

Проверьте здесь, помогает ли это, но будьте осторожны, так как это требует некоторой настройки реестра: http://smallvoid.com/article/winnt-tcpip-max-limit.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...