Улучшение производительности WCF - PullRequest
4 голосов
/ 09 апреля 2009

Могу ли я узнать, как улучшить производительность моей службы .Net WCF? Сейчас он довольно медленный, а иногда забивается и перестает отвечать.

Ответы [ 7 ]

2 голосов
/ 09 апреля 2009

Какой тип InstanceContextMode и ConcurrencyMode вы используете в своем классе обслуживания?

Если это экземпляры PerCall, вы можете проверить, можете ли вы уменьшить накладные расходы на создание экземпляра сервера для каждого вызова.

Если это одиночные экземпляры (синглтон) - вам это действительно нужно? :-) Попробуйте вместо этого использовать PerCall.

Марк

1 голос
/ 09 апреля 2009

Ну, какие данные вы отправляете и по какой привязке?

Проблема в размере запросов (пропускная способность) или количестве запросов (задержка). Если задержка, то просто делайте меньше, но больше запросов; -p

Для пропускной способности: если вы отправляете двоичные данные через http, вы можете включить MTOM - это сэкономит вам несколько байтов. Вы можете включить поддержку сжатия на сервере, но это не гарантируется.

Если вы используете .NET для .NET, вы можете рассмотреть protobuf-net ; здесь есть WCF-хуки для замены форматера (DataContractSerializer) на использование двоичного формата google "Protocol буферов", который очень мал и быстр. Могу посоветовать как по запросу.

Кроме этого: отправьте меньше данных; -p

1 голос
/ 09 апреля 2009

Какую привязку вы используете? Если вы используете HTTP, вы можете улучшить производительность с TCP.

По всей вероятности, узкое место будет выше в конвейере WCF и, возможно, в ваших размещенных объектах.

Нам понадобится более подробная информация о настройке WCF, чтобы иметь возможность сильно помочь.

0 голосов
/ 28 февраля 2011

Microsoft недавно выпустила статью базы знаний:

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

0 голосов
/ 07 декабря 2010

Вот статья с некоторыми статистическими данными из реальных производственных систем, вы можете использовать их для сравнения / оценки производительности.

Производительность службы WCF

0 голосов
/ 20 июля 2010

«Повышение производительности моей службы .Net WCF» - это очень общий термин, который вы спрашиваете, различные способы повышения производительности, и в то же время вам нужно найти, какой из них вызывает снижение производительности, например, доступ к БД в методах WCF.

Пожалуйста, попробуйте узнать о доступных функциях в WCF, таких как метод oneWay WCF, он поможет вам найти способы повышения производительности.

Спасибо Venkat

0 голосов
/ 09 апреля 2009

Симптомы, которые вы описываете, могут быть вызваны чем угодно. Вам нужно сузить его, используя профилировщик, такой как dotBrace JetBrain или AQTime Automated QA.

Или вы можете сделать это старомодным способом, используя свой код (именно это и делают для вас профилировщики). Соберите время начала до начала вашей операции. Когда он закончится, вычтите время начала из текущего времени, чтобы определить прошедшее время, затем распечатайте его или запишите его или что-то еще. Сделайте то же самое с методами, которые вызывает эта операция. Вы быстро увидите, какие методы занимают больше всего времени. Затем перейдите к этим методам и сделайте то же самое, выяснив, что заставляет их занимать много времени и т. Д.

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