Сервер ЛЭРС занимает почти всю память

Добрый день.
После обновления до версии 3.49 сервер ЛЭРС стал занимать почти всю память. В итоге АРМ клиенты отваливаются при попытке сформировать какой-либо отчет, или вовсе не могут залогиниться в программе.

Нажмите на процессе правой кнопкой и выберите создать дамп. Положите дамп в какое-нибудь облако и дайте ссылку.

Как долго создается дамп? Уже полчаса окно висит с предложением подождать, пока закончится запись процесса в файл.

Может создаваться достаточно долго. Сервер занял 25ГБ, идёт сканирование всей этой памяти, чтобы собрать информацию о том, кто её использует.

Похоже сервер ЛЭРС упал совсем, т.к. совсем не удается подключиться.

Нужен дамп. Можете перезагрузить, подождать пока сервер займёт примерно 5-10ГБ и попробовать ещё раз.

Ссылка на дамп процесса DropMeFiles – бесплатный файлообменник без регистрации
На одном АРМ запускался на формирование отчёт сводный по всем точкам учёта, сделанный на основе системного. Может в нём причина. Хотя ранее проблем с памятью на сервере не было. На всякий случай прикладываю форму отчёта.
Сводный отчет по точкам учета (потребление и время).zip (6.2 КБ)

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

Дамп глянем когда докачается. Пока можете перезагрузить сервер, чтобы возобновить работу.

Из дампа никакой утечки не видно. Вся память находится в методе, который готовит данные для сводного отчёта по точкам учёта. Похоже, что был сформирован сводный отчёт по всем точкам за очень большой интервал времени. Все эти данные сервер начал загружать в память, чтобы сформировать отчёт.

Вам нужно внимательно проверить разрешения. Возможно, стоит убрать разрешение на сводные отчёты у пользователя. Кроме того, для пользователя можно указать минимальную дату, начиная с которой можно будет запрашивать данные. Таким образом можно ограничить интервалы, за которые отчёты формируются.

Является ли нормой то, что при исчерпании доступной оперативной памяти сервер перестает отвечать на все запросы?
Иными словами получается любой пользователь может “положить” сервер отправив запрос на формирование “большого” отчета?

Этот вопрос лучше задать в dotnet foundation, является ли нормой, что kestrel перестаёт отвечать на запросы. Я думаю, что да. OOM это нештатная ситуация. Выше я описал как с ней можно справиться.

Отчёты должны формировать только люди, которые понимаю что делают. Остальные должны смотреть отчёты, сформированные автоматически, или иметь доступ только к части данных.

Раньше такого не было. Отчет используем регулярно. Сейчас сформировал этот отчет на сервере. Утечки не было. Если запустить этот отчет на АРМ по сети, возникает указанная выше проблема. Интервал не большой, на скрине видно.

У вас там может быть включено параллельное формирование? Из дампа утечки не видно. Виден большой набор данных для формирования сводного отчёта.

Что такое параллельное формирование? Если вы имеете в виду, что этот отчет запускают несколько пользователей, то нет. Отчет используется один раз в конце расчетного периода одним пользователем.

Имеется ввиду настройка в параметрах АРМ оператора (последний пункт):

Так же, как у вас на картинке.

Это у вас на том компьютере, где вы делали первый скриншот. Но изначально видно, что сервер пытается сформировать сводные отчёты параллельно. Возможно, у кого-то всё-таки включено параллельное формирование.

Конечно, не самое было правильное решение его добавлять.

Проверил настройки на своём АРМ и АРМ пользователя, который этот отчёт запускал. Параллельное формирование не включено. Первый скриншот - это диспетчер задач сервера, второй скрин с ошибкой - это мой компьютер, третий скрин - это снова сервер, на котором этот отчет формируется непосредственно, без ошибок и не занимая всю память.

Приложите, пожалуйста, резервную копию вашей БД. Мы развернем ее у себя и проверим формирование рассматриваемого отчета из Рабочего места оператора, подключенного к Серверу с другого компьютера.

После обновления до версии 3.49.1 проблема ушла.
Я поэкспериментировал с отчетом, задавая разные периоды. При задании периода с декабря 2021 по ноябрь 2022, память на сервере почти заканчивается (99%).

Думаю, сервер ляжет, если задать период еще больше. Можно ли как-то ограничить, либо выдавать предупреждение, если для отчета задан слишком большой период, и если для этого потребуется много памяти?

Ссылку на копию базы выложу, как только она загрузится на файлообменник.