У меня есть утечка памяти (или 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
должна быть увеличена от дефолта из-за некоторых исключительно длинные строки поступают, но я понятия не имею, почему буферы создаются для этих размеров.
Любая помощь приветствуется!
Спасибо за ответ. «очень высокая память» означает, что услуга начинается со скоростью около 100 МБ, а в течение недели или 2 - выше 1 ГБ. Другие сервисы, которые также используют эти привязки (но с другими сервисами), счастливо простаивают вокруг отметки 100 МБ. – mike