Высокое использование памяти и исключение OutOfMemoryException в приложениях .NET 8 в IISC#

Место общения программистов C#
Ответить
Anonymous
 Высокое использование памяти и исключение OutOfMemoryException в приложениях .NET 8 в IIS

Сообщение Anonymous »

У меня возникла проблема с управлением памятью в моих приложениях API, размещенных в IIS. На сервере запущено 40 приложений — смесь .NET Framework 4.8 и .NET 8. Проблема в том, что приложения .NET 8 потребляют память и не возвращают ее обратно операционной системе эффективно.
Хотя сборщик мусора (GC) работает, память часто остается выделенной внутри процесса как свободная память, но не возвращается в ОС. Такое поведение приводит к интенсивному использованию памяти процессами, и некоторые приложения в конечном итоге выдают исключение OutOfMemoryException.
Кроме того, перед запуском GC поколение 0 часто вырастает до значительных размеров, иногда достигая сотен мегабайт или даже несколько гигабайт. Чрезмерное использование памяти вызывает серьезные проблемы с производительностью, и мне нужно решение, позволяющее оптимизировать использование памяти, заставить приложения .NET 8 более эффективно освобождать неиспользуемую память и смягчить эти проблемы.
Приложения используют EF Core 8.0.11 (только чтение). DbContext зарегистрирован как ограниченный.

Код: Выделить всё

return dbContext.Speakers.AsNoTracking().OrderBy(s => s.Name).ThenBy(s => s.Id);
Есть ли у вас какие-либо рекомендации по улучшению управления памятью или настройке GC для лучшей обработки этого сценария?


Подробнее здесь: https://stackoverflow.com/questions/793 ... ons-on-iis
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»