WCF Restful сервис плохая работа - PullRequest
1 голос
/ 21 июня 2011

Моему сервису wcf restful удается обслуживать только 2 запроса в секунду!

подробно:

Я создал службу отдыха wcf, которая предоставляет только один метод через глагол GET. Метод не логичен и сразу возвращается.

Я также создал тестовый клиент для проверки пропускной способности и производительности сервиса, который отправляет запросы через WebHttpRequest.

Служба смогла обработать только 2 запроса / сек!

Я также сделал запрос в службу через мой браузер, и тот же результат: 500 мс для одного запроса.

Затем я изменил привязку службы к netTcpBinding, и служба смогла обработать около 2000 запросов / сек.

Служба работала в службе Windows и размещалась в WebServiceHost с WebHtppBinding.

приятно отметить, что и клиент, и служба работали на одном и том же сервере.

Имеет ли какой-то смысл, что у wcf restful service такая низкая производительность?

Буду признателен за любую помощь. Спасибо.

1 Ответ

4 голосов
/ 21 июня 2011

Нет, это не имеет смысла и, вероятно, указывает на проблему с вашим тестированием. Как был написан ваш тестовый клиент REST? Знаете ли вы, что по умолчанию .NET разрешает два открытых подключения к любому домену для «обычного» процесса .NET? Для приложений ASP.NET оно автоматически увеличивается до десять .

Эта информация задокументирована здесь в ServicePointManager.DefaultConnectionLimit. Вы можете увеличить это программно или через config , добавив более высокий предел для домена, к которому вы пытаетесь подключиться. В конфигурации это будет выглядеть примерно так:

<system.net>
    <connectionManagement>
        <add address="www.myserver.com" maxconnection="20" />
    </connectionManagement>
</system.net>

Вы можете открыть соединения для всех доменов, используя address="*", если хотите.

Что касается наблюдаемой задержки, она может быть результатом других функций, которые включены по умолчанию, таких как UseNagleAlgorithm или, если ваш POST'ing, Expect100Continue .

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