Я пытаюсь написать простой тестер нагрузки для одного из наших веб-сервисов, который обслуживается через 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).
Заранее спасибо,
Али