|
4 / 4 / 0
Регистрация: 06.03.2018
Сообщений: 225
|
|
Освобождение памяти в веб-сервисе01.04.2024, 14:32. Показов 1790. Ответов 26
Метки нет (Все метки)
Есть такая проблема: в веб-сервисе загружается файл пакетами, файл потом обрабатываются и сильно повышают потребление памяти процессом. В веб-сервисе используются библиотеки других команд, по обработке файлов и подозрение на эти библиотеки. Повлиять на на них очень сложно. Будем считать что веб-сервис ни в чем не виноват, а виноваты эти библиотеки и без этих библиотек не обойтись и пофиксить в этих библиотеках нет возможности.
У клиентов есть визуальные средства контроля ресурсов и они сразу видят, что веб-сервис потребляет много памяти и это их напрягает. Проблема в том что мне надо наглядно показать что веб-сервис отработал и освободил память. Из идей только одна: в веб-сервисе оставить только функциональность приема пакета данных и сохранение этих данных во временный файл на сервере (так щас и работает). А всю функциональность по обработке этого файла (там на самом деле очень много работы делается с этим файл, я для простоты говорю что это обработка файла) вынести в серверную задачу и запускать эту задачу из веб-сервиса, а после выполнения работы убивать задачу и память освобождать таким образом. Может у кого-нибудь будут идеи получше?
0
|
|
| 01.04.2024, 14:32 | |
|
Ответы с готовыми решениями:
26
Авторизация в веб сервисе Не работает IP на Веб-сервисе Сортировка слиянием в веб сервисе |
|
|
||
| 02.04.2024, 12:27 | ||
|
Alim96, Вы статью прочитали? Там хорошо всё рассказано и можно понять, что на расход памяти можно забить. Оно само там всё работает и когда надо очищается. Запустите несколько копий и проследите как будет меняться выделение памяти для процесса. Если не будет хватать памяти какому нибудь процессу, GC начнёт очистку сам...
Добавлено через 13 минут Alim96,
1
|
||
|
13 / 11 / 2
Регистрация: 03.12.2017
Сообщений: 22
|
|
| 02.04.2024, 13:13 | |
|
Ограничивать объем GC почти всегда плохая идея.
Вмешиваться в работу GC не надо, не ваш случай Скорее всего проблема происходит из-за больших объектов, которые вы загружаете в память. Большие объекты НАДОЛГО помещаются в Large Object Heap (LOH). GC очень не любит чистить LOH, это долго и 'дорого'. Поэтому он и не будет чистить LOH так долго, как только может (и это правильно). (Приложение можешь съесть до 70% доступной памяти на устройстве и это в пределах нормы) Если приложение не крашится, то оно нормально работает. Но оптимизировать можно. Попробуйте не создавать большие объекты (почти всегда это очень большие string). Возможно вам помогут стримы, структура Span<T>, StringBuilder или если есть возможность редактировать файл выборочно (по строкам, блокам) то поступайте так.
2
|
|
|
4 / 4 / 0
Регистрация: 06.03.2018
Сообщений: 225
|
|
| 02.04.2024, 15:11 [ТС] | |
|
Andrey-MSK, статью конечно читал. Прежде чем сюда написать она попадалась мне часто.
Я просто решил еще поспрашивать че можно сделать. Потому что просто забить всегда можно) Добавлено через 18 секунд А так всем спасибо за помощь и советы
0
|
|
|
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
|
||
| 02.04.2024, 18:31 | ||
|
Добавлено через 44 секунды
2
|
||
| 03.04.2024, 05:22 | |
|
Не по теме: kolorotur, а ведь это очень ёмкое и красочное название для большинства тех сервисов, с которыми мне сталкиваться приходилось)))
0
|
|
|
4 / 4 / 0
Регистрация: 06.03.2018
Сообщений: 225
|
|
| 03.04.2024, 07:42 [ТС] | |
|
0
|
|
|
|
||
| 08.04.2024, 23:31 | ||
|
1. Там всё оптимально, просто сама задача жрет много ОЗУ. Маловероятно, но исключать стоит только после разбора. 2. Виновата либа. Идеально -- переписать. Менее идеально -- ваш вариант с отдельным процессом, который будет стартовать, выдавать результат и высвобождать ресурсы после. Проблема в том что внедрение не тривиально (межпроцеросный обмен данными не самая простая задача), да и потенциально можете назапускать 100500 висяков что уже 100% приговорит сервак. 3. Либа не причем. Из вариантов не правильное использование (скажем забыли какой-нибудь Dispose или Clear), либо вообще утечка в другом месте (кеш какого-нибудь sql).
0
|
||
| 08.04.2024, 23:31 | |
|
Подключение к MySQL кодом в веб сервисе Типы элементов коллекции в веб-сервисе ЕФРСБ Сложности с переносом метода из сервиса в клиент в веб-сервисе Консольное и Windows Forms приложение в веб-сервисе XML Работа с прогресс баром на веб-сервисе + хранимка на postgresql Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Вангую, что это не пройдёт модерацию, и на неделе я запущу свой сервер.
Hrethgir 19.07.2026
Эта публикация сейчас в песочнице и ждёт приглашения.
https:/ / habr. com/ ru/ sandbox/ 295048/
начало и оглавление
-
Как «пернатого» заставить осваивать новые горизонты опыта через масштабирование. . .
|
сукцессия 33. открытые вопросы от клауде
anaschu 19.07.2026
"Что накопилось за эту часть А — тринадцать правок, из которых шесть пришли из ваших вопросов и каждая оказалась реальной ошибкой, а не калибровкой: односторонний симбиоз, отсутствующий листопад,. . .
|
32 сукцессия
anaschu 19.07.2026
сукцессия 28‑мерное ядро стабилизировано
Коллеги, фиксирую разбор инженерных правок и их изоморфную проекцию на экономику, меметику и половой отбор. Модель теперь не «подкручивает» сходимость —. . .
|
сукцессия 31: модель микоризы - это модель ещё нескольких явлений, социальных и экономических
anaschu 18.07.2026
Теория «Всего»: апдейт v1. 1. 2 — 28‑мерное ядро стабилизировано
Коллеги, фиксирую разбор инженерных правок и их изоморфную проекцию на экономику, меметику и половой отбор. Модель теперь не. . .
|
|
сукцессия 30. Массив проверяющих друг друга моделей
anaschu 18.07.2026
Архитектура сети взаимопроверяющих моделей микоризной сукцессии (v2. 0)
Развитие тензорного ОДУ-ядра и создание кросс-платформенного калибровочного полигона
Уважаемые коллеги!
В продолжение. . .
|
Грибы - это женщины, деревья - это мужчины. Анти инь янь для союза мужчины и женщины.
anaschu 18.07.2026
ГЛАВНЫЙ НАУЧНО-ФИЛОСОФСКИЙ ВЫВОД: Сексуально-Репродуктивный Капитализм против Государства Моногамии
Коллеги, мы вышли на финишную прямую 20-мерного ОДУ-моделирования вековой сукцессии (ветка. . .
|
Текстовый слайдер с нумерацией страниц и кроссбраузерность.
russiannick 18.07.2026
Один мой друг написал текстовый слайдер с нумерацией страниц. Сегодня я расскажу как он умудрился подружить его с кроссбраузерностью.
Очевидно сложно угодить с шириной каждому браузеру. Один крадет. . .
|
Грибы - это мемы, дерево - это человек. Применение микоризной модели к теории меметики Докинза.
anaschu 18.07.2026
Меметический изоморфизм теории «всего»: Грибная сукцессия как модель эволюции идей Докинза
Базовый код системы ОДУ микоризной сукцессии описывает не просто биологию, а универсальную. . .
|