Использование ASP.NET CORE 2.2, My REST API в производственных встречах, спорадические ошибки плохого запроса: < /p>
Чтение тела запроса, проведенного из -за слишком медленно. См. MinrequestbodyDatarate
В производственной среде, запросы обычно представляют собой смесь быстрых и медленных подключений. Будьте достаточно низким, чтобы запустить настройку Kestrel 240B/S MINBodyDatarate)
Исключение поднимается в пользовательском классе TextInputFormatter, на jarray.load Call:
public override Task ReadRequestBodyAsync(InputFormatterContext context, Encoding encoding)
{
var stream = context.HttpContext.Request.Body;
using (var reader = context.ReaderFactory(stream, encoding))
using (var jsonReader = new JsonTextReader(reader))
{
// Don't close the request stream because you many need it in other middleware or controllers.
jsonReader.CloseInput = false;
bool isSuccessful = true;
List model = null;
try
{
Assembly assembly = typeof(BaseCommand).Assembly;
// here we're reading and parsing the json array directly from the stream
var objCollection = JArray.Load(jsonReader);
Log.Information("Json message:{0}", JsonConvert.SerializeObject(objCollection));
model = objCollection
.Select((obj) =>
{
// here some code mapping the incoming data to the internal type BaseCommand
// ...
return mappedCmd;
}).ToList();
}
catch (Exception ex)
{
Log.Error(ex, "Error parsing BaseCommand");
isSuccessful = false;
}
if (isSuccessful)
{
if (model == null && !context.TreatEmptyInputAsDefaultValue)
return InputFormatterResult.NoValueAsync();
else
return InputFormatterResult.SuccessAsync(model);
}
return InputFormatterResult.FailureAsync();
}
}
< /code>
После того, как на сервере есть 5 или 6 активных запросов (согласно нашей Haproxy), мы начинаем получать около 12% ошибок. Ошибка.
После прочтения этого потока я подозревал голод потока, и поэтому я асинхронизировал метод (используя wait jarray.loadasync () вместо Jarray.load () ), а также увеличил количество mindthread threatpool (10 вместо 1): противоположный моему ожиданию, это не имело эффекта на все! ЦП и диагностика памяти, и они не насыщены: никогда не превышают 15% ЦП и 10% памяти.>
Подробнее здесь: https://stackoverflow.com/questions/790 ... e-minreque
Чтение тела запроса, проведенного из -за того, что данные поступают слишком медленно. Смотрите MinrequestbodyDatarate ⇐ C#
Место общения программистов C#
1758556510
Anonymous
Использование ASP.NET CORE 2.2, My REST API в производственных встречах, спорадические ошибки плохого запроса: < /p>
Чтение тела запроса, проведенного из -за слишком медленно. См. MinrequestbodyDatarate
В производственной среде, запросы обычно представляют собой смесь быстрых и медленных подключений. Будьте достаточно низким, чтобы запустить настройку Kestrel 240B/S MINBodyDatarate)
Исключение поднимается в пользовательском классе TextInputFormatter, на jarray.load Call:
public override Task ReadRequestBodyAsync(InputFormatterContext context, Encoding encoding)
{
var stream = context.HttpContext.Request.Body;
using (var reader = context.ReaderFactory(stream, encoding))
using (var jsonReader = new JsonTextReader(reader))
{
// Don't close the request stream because you many need it in other middleware or controllers.
jsonReader.CloseInput = false;
bool isSuccessful = true;
List model = null;
try
{
Assembly assembly = typeof(BaseCommand).Assembly;
// here we're reading and parsing the json array directly from the stream
var objCollection = JArray.Load(jsonReader);
Log.Information("Json message:{0}", JsonConvert.SerializeObject(objCollection));
model = objCollection
.Select((obj) =>
{
// here some code mapping the incoming data to the internal type BaseCommand
// ...
return mappedCmd;
}).ToList();
}
catch (Exception ex)
{
Log.Error(ex, "Error parsing BaseCommand");
isSuccessful = false;
}
if (isSuccessful)
{
if (model == null && !context.TreatEmptyInputAsDefaultValue)
return InputFormatterResult.NoValueAsync();
else
return InputFormatterResult.SuccessAsync(model);
}
return InputFormatterResult.FailureAsync();
}
}
< /code>
После того, как на сервере есть 5 или 6 активных запросов (согласно нашей Haproxy), мы начинаем получать около 12% ошибок. Ошибка.
После прочтения этого потока я подозревал голод потока, и поэтому я асинхронизировал метод (используя wait jarray.loadasync () вместо Jarray.load () ), а также увеличил количество mindthread threatpool (10 вместо 1): противоположный моему ожиданию, это не имело эффекта на все! ЦП и диагностика памяти, и они не насыщены: никогда не превышают 15% ЦП и 10% памяти.>
Подробнее здесь: [url]https://stackoverflow.com/questions/79031528/reading-the-request-body-timed-out-due-to-data-arriving-too-slowly-see-minreque[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия