powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Остановка потоков сервиса на период сборки мусора.
61 сообщений из 61, показаны все 3 страниц
Остановка потоков сервиса на период сборки мусора.
    #39368497
_r2003
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день.

Соственно есть .net сервис, у него в оперативке живет 3 гигабайта данных.
Сервис получает данные по протоколу tcp/ip и отдает их дальше по этому же протоколу.
В обычном режиме работы сервис каждую минуту засыпает полностью на 100-200 мс.
Сервис работает на платформе 4.5, с ней время стало меньше чем было на 4.0.
В случае резкого роста трафика, в целом не сильно, может мегабайт 20-100.
Сервис обработав данные засывает на время от 3-х до 5-ти секунд.
Утечек памяти нет, так как что сервис выделяет, то он тут же освобождает.
И с одним и тем же объемом месяц работает.
Сборщик мусора работает в серверном, и конкурентном режиме.
Версия clr: 4.0.30319.42000

В общем заказчик хочет, что бы этих засыпаний на 100-200 мс не было.

Отсюда вопроса, это возможно?

Спасибо.
...
Рейтинг: 0 / 0
Остановка потоков сервиса на период сборки мусора.
    #39368503
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_r2003,

А чем ему заниматься в эти 200 мс? Биткойны обсчитывать?
...
Рейтинг: 0 / 0
Остановка потоков сервиса на период сборки мусора.
    #39368516
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не очень понял "Каждую минуту засыпает на 100-200 мс"
обычно сервис работает в цикле и засыпает после каждой итерации, а не каждую минуту.
Может у вас там где то таймер или еще какая то фигня, которая во время выполнения не выполняется, а попадает в пул, а как только работа выполнилась все накопленные "тики" в каком то пуле начинают выполняться и программа весит пока этот пул не освободится?
...
Рейтинг: 0 / 0
Остановка потоков сервиса на период сборки мусора.
    #39368529
_r2003
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
1) Что входящий запрос попадает на эту задержку, в итоге в целом время обработки конкретного запроса становится больше.
2) Он засыпает в удобное ему время на удобное ему время, а в целом за минуту набегает 200мс. Хотя обычно порции по 100 мс.
...
Рейтинг: 0 / 0
Остановка потоков сервиса на период сборки мусора.
    #39368545
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_r2003,

Для предотвращения интенсивной сборки мусора, постарайся больше кешировать данные. Практики универсального переиспользования блока памяти сложны в среде .NET, и всегда намного проще обойтись грамотным кешированием. Всё что можно положить в кеш, должно быть туда положено. Больше без конкретики сказать ничего нельзя. Ручное управление сборкой мусора -- последнее, к чему стоит обращаться.
...
Рейтинг: 0 / 0
Остановка потоков сервиса на период сборки мусора.
    #39368564
_r2003
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
hVostt,

Я бы не сказал, что сборка интенсивная. 2-4 раза за минуту.
Причем, освобождается до 1000 объектов за минуту.
Что в общемто не много, просто поток останавливается на 200мс.
Как раз эти задержки и являются порблемой.
...
Рейтинг: 0 / 0
Остановка потоков сервиса на период сборки мусора.
    #39368610
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Попробуй сборку мусора запускать принудительно в моменты когда делать нечего. Например закончил обработку запроса, освободил все ненужное - запустил сборку мусора. Или после каждого N-го запроса. Или по каким-то признакам предугадывать что ближайшие 100-200 мс запросов не будет - значит можно почиститься пока делать нечего.
...
Рейтинг: 0 / 0
Остановка потоков сервиса на период сборки мусора.
    #39368632
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Листы заменить на массивы, классы на структуры :)
...
Рейтинг: 0 / 0
Остановка потоков сервиса на период сборки мусора.
    #39368633
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttРучное управление сборкой мусора -- последнее, к чему стоит обращаться.
хороший совет для hello, world!
...
Рейтинг: 0 / 0
Остановка потоков сервиса на период сборки мусора.
    #39368783
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAЛисты заменить на массивы

Однофигственно.
...
Рейтинг: 0 / 0
Остановка потоков сервиса на период сборки мусора.
    #39368786
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Изопропилхороший совет для hello, world!

Это как вскрыть тебе голову, чтобы разобраться, почему у тебя плохое настроение. Очень хороший совет для любых проектов.
...
Рейтинг: 0 / 0
Остановка потоков сервиса на период сборки мусора.
    #39368788
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_r2003Как раз эти задержки и являются порблемой.

Отказаться от сборки мусора? Не вариант. Снизить количество мусора -- вариант. Кеширование!
...
Рейтинг: 0 / 0
Остановка потоков сервиса на период сборки мусора.
    #39368792
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_r2003,

Ещё можно... не, нужно, провести профилирование. Что конкретно является источником мусора. Мы для профилирования используем dotTrace, отличное средство для ловли причин "blocking GC".
...
Рейтинг: 0 / 0
Остановка потоков сервиса на период сборки мусора.
    #39368808
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttСнизить количество мусора -- вариант
как количество мусора влияет на построение графа доступных объектов?
...
Рейтинг: 0 / 0
Остановка потоков сервиса на период сборки мусора.
    #39368821
Фотография Denis.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_r2003,

помимо очевидных советов gcmode и loh могут помочь наверное.
...
Рейтинг: 0 / 0
Остановка потоков сервиса на период сборки мусора.
    #39368833
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Изопропилкак количество мусора влияет на построение графа доступных объектов?

1. Вот здесь подробно написано

https://msdn.microsoft.com/ru-ru/library/ee787088(v=vs.110).aspx

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

Чем быстрее заполняется поколение 0, тем быстрее наступит уборка мусора. Если программа создаёт очень много объектов, которые используются очень короткое время, то GC срабатывает чаще. Искоренить это можно, снизив количество таких объектов.

Да, можно поиграть с переиспользованием памяти, со структурами, но это вовсе не бесплатно. Ручное управление GC чаще приносит вред, чем пользу.
...
Рейтинг: 0 / 0
Остановка потоков сервиса на период сборки мусора.
    #39368843
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_r2003,

Ещё могу посоветовать перейти на 4.6, начиная с 4.5 в .NET была проделана большая работа по оптимизации работы GC.

В 4.6 были добавлены такие штуковины, как TryStartNoGCRegion и EndNoGCRegion, на определённом участке можно запретить, точнее, настойчиво рекомендовать не заниматься уборкой мусора.

Больше информации о новых возможностях здесь: https://msdn.microsoft.com/en-us/library/ms171868(v=vs.110).aspx#v46
...
Рейтинг: 0 / 0
Остановка потоков сервиса на период сборки мусора.
    #39368873
Т-Миронов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нужно разбираться что это за 3гб. Если они подлежат сборке значит нужно ранить сборщик самостоятельно почаще. Если этор неподлежащиц сборке граф н6ужно выносить его в Large Object Heap. Что это за 3ГБ?
...
Рейтинг: 0 / 0
Остановка потоков сервиса на период сборки мусора.
    #39368906
Т-Миронов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вообще надо профайлером посмотреть каким-нибудь и все будет ясненько.

вот тут можно посмотреть как пользоваться бесплатной perfVew
YouTube Video
...
Рейтинг: 0 / 0
Остановка потоков сервиса на период сборки мусора.
    #39368930
_r2003
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо, за советы.

3Гб - это конкурентные словари, со справочной информацией.
ConcurrentDictionary<int,Справочник>
Они нужны для обработки данных.
Удалить их из сервиса нельзя.
Как их перенести в Large Object Heap?

Дело в том, что в целом создается и удаляется не значительное количество объектов.
Из входящего набора байт формируется объект.
Дальше этот объект обрабатывается и освобождается.
Таких объектов не много.

Важно что ОЗУ 32 гига, из них занято только четыре.
Не понятно, зачем делать очистку мусора куждую минуту.
В моем понимание, на раз в каждые 8 часов, памяти должно хватать.

Спасибо.
...
Рейтинг: 0 / 0
Остановка потоков сервиса на период сборки мусора.
    #39368957
Т-Миронов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_r2003,

Чтоб перенести в LOH что-то нужно создать свой из непрырывный блок памяти больше 85kb и уже в этом блоке размещать свои объекты.
Можно почитать например здесь.
http://stackoverflow.com/questions/2510975/c-sharp-object-pooling-pattern-implementation

Можно попробовать GC с concurrent на Background переставить. Но нужно убедиться что дело в словарях.
...
Рейтинг: 0 / 0
Остановка потоков сервиса на период сборки мусора.
    #39369132
Pallaris
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_r2003Спасибо, за советы.

3Гб - это конкурентные словари, со справочной информацией.
ConcurrentDictionary<int,Справочник>
Они нужны для обработки данных.
Удалить их из сервиса нельзя.
Как их перенести в Large Object Heap?
.
.

Если они используются постоянно, то их не надо никуда переносить, их нужно сделать рутами, чтоб gc их не трогал. Тем более как ты говоришь памяти много
...
Рейтинг: 0 / 0
Остановка потоков сервиса на период сборки мусора.
    #39369376
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PallarisЕсли они используются постоянно, то их не надо никуда переносить, их нужно сделать рутами, чтоб gc их не трогал. Тем более как ты говоришь памяти много

Если ссылки на 3Гб достижимые, то GC их трогать не будет. Надо смотреть профайлером, чего он там колбасит.
...
Рейтинг: 0 / 0
Остановка потоков сервиса на период сборки мусора.
    #39369378
Фотография Denis.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
еще можно попробовать заменить конкурентдикты на обычные с локами. Частенько выходит и быстрее и менее прожорливо.
...
Рейтинг: 0 / 0
Остановка потоков сервиса на период сборки мусора.
    #39369385
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Denis.еще можно попробовать заменить конкурентдикты на обычные с локами. Частенько выходит и быстрее и менее прожорливо.

В режиме многопоточного частого чтения и периодической записью не будет.
...
Рейтинг: 0 / 0
Остановка потоков сервиса на период сборки мусора.
    #39369392
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Denis.еще можно попробовать заменить конкурентдикты на обычные с локами. Частенько выходит и быстрее и менее прожорливо.
Тут проблемы в другом 20013065 , объектов очень много поэтому сборка мусора томозит.
...
Рейтинг: 0 / 0
Остановка потоков сервиса на период сборки мусора.
    #39369544
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в свое время компания трейдер - елмакс двинула проект disruptor, так вот, там они отказались вообще от уборки мусора.
архитектурное решение довольно интересное.
...
Рейтинг: 0 / 0
Остановка потоков сервиса на период сборки мусора.
    #39369559
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Где-то в степи,

на C++ небось перешли?
...
Рейтинг: 0 / 0
Остановка потоков сервиса на период сборки мусора.
    #39369575
Фотография Denis.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttDenis.еще можно попробовать заменить конкурентдикты на обычные с локами. Частенько выходит и быстрее и менее прожорливо.

В режиме многопоточного частого чтения и периодической записью не будет.
Это надо профайлить. Так не угадаешь. + есть вариант ридерарйтерлок.
...
Рейтинг: 0 / 0
Остановка потоков сервиса на период сборки мусора.
    #39369577
Фотография Denis.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TDenis.еще можно попробовать заменить конкурентдикты на обычные с локами. Частенько выходит и быстрее и менее прожорливо.
Тут проблемы в другом 20013065 , объектов очень много поэтому сборка мусора томозит.
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
 
var dict = new ConcurrentDictionary<int,byte>();
            for (int i = 0; i < 10 * 1000 * 1000; i++)
                dict.TryAdd(i, 0);

            GC.Collect();
            GC.WaitForPendingFinalizers();
            GC.Collect();


Так 700 мегабайт
Код: c#
1.
var dict = new Dictionary<int,byte>();


Так 200.
Его 3 гб могут превратиться в 500 мб.
...
Рейтинг: 0 / 0
Остановка потоков сервиса на период сборки мусора.
    #39369603
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Denis.Так 700 мегабайт
Код: c#
1.
var dict = new Dictionary<int,byte>();


Так 200.
Его 3 гб могут превратиться в 500 мб.
там реально byte используется? Если так и int только положительный, то можно так
Код: c#
1.
var dict = new byte[2Гб];


займет 2 Гб и никакой сборки мусора не понадобится.
...
Рейтинг: 0 / 0
Остановка потоков сервиса на период сборки мусора.
    #39369609
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Denis.Так 200.
Его 3 гб могут превратиться в 500 мб.

Настолько жирно-толсто-натянутый пример, что даже не смешно.
Байты в словаре?
Серьёзно!?
А чего так жирно, давай биты!
...
Рейтинг: 0 / 0
Остановка потоков сервиса на период сборки мусора.
    #39369665
Фотография Denis.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt,

откуда мне знать что у него там за данные лежат, наоборот демонстрирует особенности словарей оставляя данные за скобками
...
Рейтинг: 0 / 0
Остановка потоков сервиса на период сборки мусора.
    #39369679
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Denis.hVostt,

откуда мне знать что у него там за данные лежат, наоборот демонстрирует особенности словарей оставляя данные за скобками
Количество объектов не меняется. Проблема у тебя в количестве , а не в памяти которую они занимают.
...
Рейтинг: 0 / 0
Остановка потоков сервиса на период сборки мусора.
    #39369687
Фотография Denis.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TDenis.hVostt,

откуда мне знать что у него там за данные лежат, наоборот демонстрирует особенности словарей оставляя данные за скобками
Количество объектов не меняется. Проблема у тебя в количестве , а не в памяти которую они занимают.
У меня проблемы нету. А у тс может быть проблема и в том и в том. Сборку вызывает давление на память, а не количество бесхозных рутов.
...
Рейтинг: 0 / 0
Остановка потоков сервиса на период сборки мусора.
    #39369775
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Denis.Сборку вызывает давление на память, а не количество бесхозных рутов.

Это не правда. И ты не прав. Влияет и давление на память, и количество объектов в 0-м поколении.
...
Рейтинг: 0 / 0
Остановка потоков сервиса на период сборки мусора.
    #39369776
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Denis.откуда мне знать что у него там за данные лежат, наоборот демонстрирует особенности словарей оставляя данные за скобками

Ты взял заведомо некорректный пример, который весьма далёк от жизни. Всё что ты выяснил, это то, что ConcurrentDictionary потребляет дополнительную память. И это никогда не скрывалось, всё имеет свою цену.
...
Рейтинг: 0 / 0
Остановка потоков сервиса на период сборки мусора.
    #39369778
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Denis.Dima Tпропущено...

Количество объектов не меняется. Проблема у тебя в количестве , а не в памяти которую они занимают.
У меня проблемы нету. А у тс может быть проблема и в том и в том. Сборку вызывает давление на память, а не количество бесхозных рутов.
Согласен, но так понижается частота сборки мусора, а у ТСа проблемы из-за времени одной сборки.

Теоретически общее количество объектов при использовании Dictionary может быть меньше, мы же не знаем что там дополнительно создается для работы самих Dictionary/ConcurrentDictionary. Только непонятно как это померить. Не нашел как посмотреть сколько объектов создано на текущий момент.
...
Рейтинг: 0 / 0
Остановка потоков сервиса на период сборки мусора.
    #39369802
Фотография Denis.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttDenis.Сборку вызывает давление на память, а не количество бесхозных рутов.

Это не правда. И ты не прав. Влияет и давление на память, и количество объектов в 0-м поколении.
Я сомневаюсь что у него 100мс чистится 0 поколение. А можно ссылку на источник что колво объектов важно?
...
Рейтинг: 0 / 0
Остановка потоков сервиса на период сборки мусора.
    #39369833
_r2003
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Pallaris,

Как это делается? Как сделать словари рутами?

Спасибо.
...
Рейтинг: 0 / 0
Остановка потоков сервиса на период сборки мусора.
    #39369849
Pallaris
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_r2003Pallaris,

Как это делается? Как сделать словари рутами?

Товарищ hVostt уже писал 20011426 - кэширование, как вариант - реализовать какой-то синглетон-сервис, который будет в себе хранить ссылки на объекты словарей в течении всей жизни приложения. По необходимости обращаться к сервису за нужными словарями.

Кстати, это 100% инфа, что приложение приунывает из-за сборки мусора?
...
Рейтинг: 0 / 0
Остановка потоков сервиса на период сборки мусора.
    #39369883
y.dev.net
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сделать один/набор объектов в LOH с переиспользованием уже предлагали? Вижу в обсуждении кэши - сразу скажу, что они как раз приводят к риску сбора мусора в не-эфемерных поколениях, что по сути своей трагедия для ТС.
...
Рейтинг: 0 / 0
Остановка потоков сервиса на период сборки мусора.
    #39369890
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
y.dev.netСделать один/набор объектов в LOH с переиспользованием уже предлагали? Вижу в обсуждении кэши - сразу скажу, что они как раз приводят к риску сбора мусора в не-эфемерных поколениях, что по сути своей трагедия для ТС.

Переиспользование имеет смысл в огромной, массированной и быстрой текучке данных, например, загрузка данных блоками в режиме автомата. Если используются одни и те же данные, то единственно верным будет организация грамотного кеширования.
...
Рейтинг: 0 / 0
Остановка потоков сервиса на период сборки мусора.
    #39369896
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Denis.А можно ссылку на источник что колво объектов важно?

https://msdn.microsoft.com/ru-ru/library/ee787088(v=vs.110).aspx

MSDNЕсли выполняется фоновая сборка мусора и в поколении 0 размещено достаточное количество объектов, среда CLR выполняет высокоприоритетную сборку мусора для поколения 0 или поколения 1.

Информация подтверждается и на других источниках. Информация подтверждается испытаниями, для разных версий фреймворка и при разных условиях это предельное количество плавает, но оно существует.
...
Рейтинг: 0 / 0
Остановка потоков сервиса на период сборки мусора.
    #39369900
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
y.dev.netВижу в обсуждении кэши - сразу скажу, что они как раз приводят к риску сбора мусора в не-эфемерных поколениях, что по сути своей трагедия для ТС.

Какой ещё риск? Если данные лежат в кеше, то GC их собирать не будет. Если данные вытесняются из кеша, значит достиг предел использования памяти. Либо заданное в настройках ограничение достигнуто, или реально свободной памяти становится мало. При чём тут GC? Это уже обсуждение механики работы кеша.
...
Рейтинг: 0 / 0
Остановка потоков сервиса на период сборки мусора.
    #39369905
y.dev.net
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttПереиспользование имеет смысл в огромной, массированной и быстрой текучке данных, например, загрузка данных блоками в режиме автомата.

У ТС, насколько я понял, и есть текучка в виде проксинга tcp запросов и требование предотвратить любые остановки на GC. В вашем описании кэширования оно не сильно отличается от переиспользования, имхо. Только вы допускаете попадание этого кэша в 2-е поколение, а я за "сразу в LOH".
...
Рейтинг: 0 / 0
Остановка потоков сервиса на период сборки мусора.
    #39369909
y.dev.net
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttКакой ещё риск?

Риск такой, что в кэше по ключу создается другой объект.
...
Рейтинг: 0 / 0
Остановка потоков сервиса на период сборки мусора.
    #39369925
_r2003
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Pallaris,

Да, PerfView - Это показывает.

Event Name Time MSec DURATION_MSEC Count Depth
Microsoft-Windows-DotNETRuntime/GC/Stop 242 499,616 985,262 478 2
Microsoft-Windows-DotNETRuntime/GC/Stop 400 108,341 101,213 489 1
Microsoft-Windows-DotNETRuntime/GC/Stop 527 150,331 96,683 498 0
...
Рейтинг: 0 / 0
Остановка потоков сервиса на период сборки мусора.
    #39369926
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
y.dev.netУ ТС, насколько я понял, и есть текучка в виде проксинга tcp запросов и требование предотвратить любые остановки на GC. В вашем описании кэширования оно не сильно отличается от переиспользования, имхо. Только вы допускаете попадание этого кэша в 2-е поколение, а я за "сразу в LOH".

Не согласен. Всё имеет свою цену. Можно убить время и выяснить потом, что проблема тормозов вовсе не из-за работы GC, или не только из-за него. Сразу в LOH звучит, также как переписать всё на C++. Может оно вообще все проблемы порешает
...
Рейтинг: 0 / 0
Остановка потоков сервиса на период сборки мусора.
    #39369927
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_r2003,

Пробовал на 4.6 перейти? Можешь это сделать на тестовом стенде или это проблематично?
...
Рейтинг: 0 / 0
Остановка потоков сервиса на период сборки мусора.
    #39369930
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
y.dev.netРиск такой, что в кэше по ключу создается другой объект.

Это не правильная работа с кешем. Зачем создавать там другой объект, если там уже есть объект по ключу? Смысл кеша как раз в том, что НЕ создавать объект, а взять его из кеша.

Инвалидация кеша вопрос другой.
...
Рейтинг: 0 / 0
Остановка потоков сервиса на период сборки мусора.
    #39369933
y.dev.net
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttНе согласен. Всё имеет свою цену. Можно убить время и выяснить потом, что проблема тормозов вовсе не из-за работы GC, или не только из-за него. Сразу в LOH звучит, также как переписать всё на C++. Может оно вообще все проблемы порешает

Ну, я исхожу исключительно из информации, которую дал ТС, и полагаю, что его данные верные :) Т.е. проблема именно в GC и только в нем. А так, конечно, нужно точно знать в чем конкретно проблема, чтобы ее решать...
...
Рейтинг: 0 / 0
Остановка потоков сервиса на период сборки мусора.
    #39369936
y.dev.net
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttЭто не правильная работа с кешем. Зачем создавать там другой объект, если там уже есть объект по ключу? Смысл кеша как раз в том, что НЕ создавать объект, а взять его из кеша.
Инвалидация кеша вопрос другой.

Ну так потому я и пишу "риск".
...
Рейтинг: 0 / 0
Остановка потоков сервиса на период сборки мусора.
    #39369938
Фотография Denis.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttDenis.А можно ссылку на источник что колво объектов важно?

https://msdn.microsoft.com/ru-ru/library/ee787088(v=vs.110).aspx

MSDNЕсли выполняется фоновая сборка мусора и в поколении 0 размещено достаточное количество объектов, среда CLR выполняет высокоприоритетную сборку мусора для поколения 0 или поколения 1.

Информация подтверждается и на других источниках. Информация подтверждается испытаниями, для разных версий фреймворка и при разных условиях это предельное количество плавает, но оно существует.
В английской версии документа написано иное. А можно ссылки на другие источники или суть эксперимента?
...
Рейтинг: 0 / 0
Остановка потоков сервиса на период сборки мусора.
    #39369940
_r2003
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
hVostt,

Уже перешел на 4.6 , поведение от 4.5 не отличается.
Мне так кажется там CLR общий, как только 4.5 включил так сразу увидел оптимизацию из этой статьи:

https://blogs.msdn.microsoft.com/dotnet/2012/07/20/the-net-framework-4-5-includes-new-garbage-collector-enhancements-for-client-and-server-apps/
...
Рейтинг: 0 / 0
Остановка потоков сервиса на период сборки мусора.
    #39370029
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_r2003hVostt,

Уже перешел на 4.6 , поведение от 4.5 не отличается.
Мне так кажется там CLR общий, как только 4.5 включил так сразу увидел оптимизацию из этой статьи:

https://blogs.msdn.microsoft.com/dotnet/2012/07/20/the-net-framework-4-5-includes-new-garbage-collector-enhancements-for-client-and-server-apps/

Вот это включал?

https://msdn.microsoft.com/en-us/library/ms229357.aspx
...
Рейтинг: 0 / 0
Остановка потоков сервиса на период сборки мусора.
    #39370035
_r2003
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
hVostt,

Да, это было изначально включено.
...
Рейтинг: 0 / 0
Остановка потоков сервиса на период сборки мусора.
    #39370036
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_r2003,

Короче надо профилировать, какие-то тычки пальцем в небо, то в LOH тут рекомендуют всё запихать и дело с концом, то ещё что-нибудь.
...
Рейтинг: 0 / 0
Остановка потоков сервиса на период сборки мусора.
    #39370046
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
как сборщик может зависать, если у него есть timeout по истечению которого он прервётся?
столько всяких предложений, думаю без анализа и диагностики тут еще будет 100500 предположений?
...
Рейтинг: 0 / 0
Остановка потоков сервиса на период сборки мусора.
    #39370107
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman Mejtes,

в джава на эти грабли наступили несколько раньше,
мусор может образовываться быстрее. чем работает сборщик
...
Рейтинг: 0 / 0
Остановка потоков сервиса на период сборки мусора.
    #39375906
sqlask
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Про режимы LowLatency и SustainedLowLatency советовали?

LowLatency
Для приложений, которые осуществляют операции, чувствительные ко времени выполнения, для которых перерывы в работе из-за сборки мусора могут иметь резко отрицательные последствия. Например, это приложения, которые выполняют функции анимации или получения данных.

SustainedLowLatency
Для приложений, которые осуществляют операции, чувствительные ко времени выполнения, время выполнения которых ограничено, но может быть достаточно продолжительным, для которых перерывы в работе из-за сборки мусора могут иметь резко отрицательные последствия. Например, приложения, требующие быстрого отклика при изменении рыночных показателей в торговую сессию.
Этот режим использует больший размер управляемой кучи, нежели другие режимы. Так как он не сжимает управляемую кучу, возможен больший уровень фрагментации. Необходимо обеспечить достаточный объем памяти.
...
Рейтинг: 0 / 0
61 сообщений из 61, показаны все 3 страниц
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Остановка потоков сервиса на период сборки мусора.
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]