Долгое время связи веб-служб WCF на одном сервере - PullRequest
3 голосов
/ 06 марта 2012

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

В настоящее время я разрабатываю систему с несколькими веб-сервисами WCF, которые интенсивно взаимодействуют.Они работают под управлением IIS7 на одном и том же компьютере, причем каждая служба находится в отдельном пуле приложений с несколькими работниками в веб-саду.

Во время индивидуальной оценки каждой веб-службы я могу обслуживать 10000–20000 запросов.в минуту, быстро и без каких-либо проблем с потреблением ресурсов (процессора и памяти).

Когда я тестирую всю систему или только подсистему, образованную двумя веб-службами, я не могу обслуживать более 2000 запросов в минуту,Я также заметил, что время связи между веб-сервисом является большой проблемой (иногда более 10 секунд).Но при тестировании только с 1000 запросов в минуту все идет гладко (время соединения не более 60 мс).Я протестировал систему как с SOAPUI, так и с JMETER, но время вычислялось на основе системных журналов, а не инструментов тестирования.Память и сеть не являются проблемой (они используются очень мало).

Позже я проверил производительность двух взаимодействующих веб-служб WCF, размещенных на двух серверах и на одном сервере.Снова кажется, что существует узкое место, когда сервисы находятся на одной машине, уменьшая количество соединений с десяти тысяч до тысяч;опять же, нет ограничений памяти или процессора.

Как примечание, в некоторых случаях я работаю с довольно большими данными, и некоторые из необходимых операций являются длинными.

Я использовал perf.mon дляПосмотрите, что происходит, для памяти, процессов, веб-службы, aspnet и т. д., но я не видел ничего, что могло бы указывать, что происходит не так.Я также перепробовал все настройки производительности и параметры настройки, которые я мог найти в Интернете.

Кто-то знает, что может быть не так?Почему связь между веб-сервисами может длиться так долго?Почему веб-служба, которая служит точкой входа в систему, может принимать 10000 запросов в минуту, когда тестируется одна, а при взаимодействии с другой веб-службой едва ли принимает 2000?Это проблема IIS7?Может ли моя система работать лучше, если каждая веб-служба будет развернута на отдельном сервере?

Я хочу лучше понять, как внутренние функции (службы IIS и WCF) улучшают производительность для текущих и будущих систем.

1 Ответ

1 голос
/ 12 сентября 2012

Вы можете попытаться собрать данные из счетчиков производительности WCF: одновременные вызовы, экземпляры, продолжительность, ... Кроме того, регулирование WCF предоставляет некоторые свойства, которые можно использовать для ограничения количества экземпляров или сеансов, создаваемых на уровне приложения.Производительность службы WCF можно улучшить, создав соответствующий экземпляр.Наконец, при нагрузочном тестировании существует множество конфигураций, которые можно применить к разным компонентам: максимальное число одновременных подключений http, ограничения IIS, наличие множества клиентов загрузки ... Из-за этого загрузка теста недействительна.

...