Задать вопрос
anonexistent
@anonexistent

Почему asp net потребляет много оперативной памяти на сервере?

имеется практически простейший api-сервис, написанный на великом и могучем .net все это располагается у нас на hyper-v -> ubuntu -> docker compose. очень много памяти расходуют наши модули c#. при перезапуске контейнера память освобождается. но нам нужно кардинальное решение. хорошо было бы, еще выяснить, в чем дело в теории + найти некоторое практическое решение.

66fe59c1a318b863570708.png
  • Вопрос задан
  • 208 просмотров
Подписаться 2 Средний 1 комментарий
Решения вопроса 1
anonexistent
@anonexistent Автор вопроса
ответы классные, спасибо всем! наставили на правильный путь. в свое время, мы вместе с командой остановились на ограничении ресурсов контейнера (512 мб)
docker-compose.yml

services:
  app:
    container_name: auth-module
    ports:
      - ${AUTH_MODULE_PORT}:${AUTH_MODULE_PORT}
    restart: unless-stopped
    depends_on:
      - postgres
    stop_grace_period: 10s 
    deploy:
      resources:
        limits:
          memory: 512M
    environment:
      ASPNETCORE_URLS: ${AUTH_MODULE_URLS}
      AUTH_DB: "host=auth-module-db;port=5432;database=${AUTH_MODULE_DB_NAME};username=${AUTH_MODULE_DB_USER};password=${AUTH_MODULE_DB_PWD}"


P.S.: контейнер чувствует себя хорошо, потребляет около 300 мб оперативной памяти сервера. если выделить слишком мало памяти - будет перезапускаться.
P.P.S.S.: еще unmanaged памяти очень много было в нашем случае
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
Пахнет утечкой памяти, даже очень-очень нагруженные приложения редко больше пары гигов потребляют.
"простейший api-сервис" редко больше 1гб потребляет
Я бы начал со снятия дампа памяти, чтобы понять, какие объекты столько занимают, а там уже можно будет и найти конкретное местно, где утечка произошла.

https://learn.microsoft.com/en-us/dotnet/core/diag...
https://learn.microsoft.com/en-us/dotnet/core/diag...
Ответ написан
Комментировать
BasiC2k
@BasiC2k
.NET developer (open to job offers)
Комуто надо надавать по рукам... ))
Скорее всего не высвобождаются какие-то объекты, которые нужно высвобождать принудительно.
Проанализируйте - что делает Ваше решение, где и как используются дополнительные библиотеки. Особое внимание (если применимо) - обработке графических объектов. Как вариант - при запуске из-под Visial Studio открыть окно мониторинга ресурсов и наблюдать - при каких операциях потребеление памяти увеличивается (и не снижается).

66fe7e7303912432424750.png
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы