2013-05-24 3 views
0

У меня есть утечка памяти (или v.high memory usage) в одном из моих процессов, и я считаю, что это может быть из-за неправильных/слабых настроек в BasicHttpBinding, которые она использует при построении SOAP-клиентов.Рекомендуемые настройки BasicHttpBinding

В частности, мне любопытно узнать, что делать до MaxBufferSize, MaxBufferPoolSize и MaxReceivedMessageSize до привязки. Есть ли причина предполагать, что они должны быть изменены из настроек по умолчанию?

текущий код делает это,

var binding = new BasicHttpBinding(); 
binding.MaxBufferSize = 5000000; // (5,000,000) 
binding.MaxBufferPoolSize = 5000000; 
binding.MaxReceivedMessageSize = 5000000; 

binding.ReaderQuotas.MaxStringContentLength = 500000; // (500,000) 

Я думаю, мои вопросы:

  • Есть ли шанс, эти значения являются причиной использования памяти или утечки?
  • Должен ли я/было бы безопасно изменить их обратно по умолчанию?
  • Будет ли недостаток только для установки .MaxReceivedMessageSize = long.MaxValue и .MaxStringContentLength = int.MaxValue?

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

Любая помощь приветствуется!

ответ

0

Пожалуйста, определите «очень высокую память».

Есть ли вероятность того, что эти значения вызвали высокую память или утечку?

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

Должен ли я/было бы безопасно изменить их обратно по умолчанию?

Вы можете попробовать.

Будут ли какой-либо недостаток только установка .MaxReceivedMessageSize = long.MaxValue и .MaxStringContentLength = int.MaxValue?

The manual говорит:

Размер сообщений, которые могут быть получены на проволоке по услугам [...] ограничен объем памяти, выделенный для каждого сообщения.

Поэтому я предполагаю, что установка его на несколько концертов не улучшит использование памяти вашего сервиса.

+0

Спасибо за ответ. «очень высокая память» означает, что услуга начинается со скоростью около 100 МБ, а в течение недели или 2 - выше 1 ГБ. Другие сервисы, которые также используют эти привязки (но с другими сервисами), счастливо простаивают вокруг отметки 100 МБ. – mike