|
Остановка потоков сервиса на период сборки мусора.
|
|||
---|---|---|---|
#18+
Добрый день. Соственно есть .net сервис, у него в оперативке живет 3 гигабайта данных. Сервис получает данные по протоколу tcp/ip и отдает их дальше по этому же протоколу. В обычном режиме работы сервис каждую минуту засыпает полностью на 100-200 мс. Сервис работает на платформе 4.5, с ней время стало меньше чем было на 4.0. В случае резкого роста трафика, в целом не сильно, может мегабайт 20-100. Сервис обработав данные засывает на время от 3-х до 5-ти секунд. Утечек памяти нет, так как что сервис выделяет, то он тут же освобождает. И с одним и тем же объемом месяц работает. Сборщик мусора работает в серверном, и конкурентном режиме. Версия clr: 4.0.30319.42000 В общем заказчик хочет, что бы этих засыпаний на 100-200 мс не было. Отсюда вопроса, это возможно? Спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.12.2016, 12:21 |
|
Остановка потоков сервиса на период сборки мусора.
|
|||
---|---|---|---|
#18+
_r2003, А чем ему заниматься в эти 200 мс? Биткойны обсчитывать? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.12.2016, 12:27 |
|
Остановка потоков сервиса на период сборки мусора.
|
|||
---|---|---|---|
#18+
не очень понял "Каждую минуту засыпает на 100-200 мс" обычно сервис работает в цикле и засыпает после каждой итерации, а не каждую минуту. Может у вас там где то таймер или еще какая то фигня, которая во время выполнения не выполняется, а попадает в пул, а как только работа выполнилась все накопленные "тики" в каком то пуле начинают выполняться и программа весит пока этот пул не освободится? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.12.2016, 12:37 |
|
Остановка потоков сервиса на период сборки мусора.
|
|||
---|---|---|---|
#18+
1) Что входящий запрос попадает на эту задержку, в итоге в целом время обработки конкретного запроса становится больше. 2) Он засыпает в удобное ему время на удобное ему время, а в целом за минуту набегает 200мс. Хотя обычно порции по 100 мс. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.12.2016, 12:43 |
|
Остановка потоков сервиса на период сборки мусора.
|
|||
---|---|---|---|
#18+
_r2003, Для предотвращения интенсивной сборки мусора, постарайся больше кешировать данные. Практики универсального переиспользования блока памяти сложны в среде .NET, и всегда намного проще обойтись грамотным кешированием. Всё что можно положить в кеш, должно быть туда положено. Больше без конкретики сказать ничего нельзя. Ручное управление сборкой мусора -- последнее, к чему стоит обращаться. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.12.2016, 12:56 |
|
Остановка потоков сервиса на период сборки мусора.
|
|||
---|---|---|---|
#18+
hVostt, Я бы не сказал, что сборка интенсивная. 2-4 раза за минуту. Причем, освобождается до 1000 объектов за минуту. Что в общемто не много, просто поток останавливается на 200мс. Как раз эти задержки и являются порблемой. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.12.2016, 13:08 |
|
Остановка потоков сервиса на период сборки мусора.
|
|||
---|---|---|---|
#18+
Попробуй сборку мусора запускать принудительно в моменты когда делать нечего. Например закончил обработку запроса, освободил все ненужное - запустил сборку мусора. Или после каждого N-го запроса. Или по каким-то признакам предугадывать что ближайшие 100-200 мс запросов не будет - значит можно почиститься пока делать нечего. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.12.2016, 13:38 |
|
Остановка потоков сервиса на период сборки мусора.
|
|||
---|---|---|---|
#18+
Листы заменить на массивы, классы на структуры :) ... |
|||
:
Нравится:
Не нравится:
|
|||
16.12.2016, 13:50 |
|
Остановка потоков сервиса на период сборки мусора.
|
|||
---|---|---|---|
#18+
hVosttРучное управление сборкой мусора -- последнее, к чему стоит обращаться. хороший совет для hello, world! ... |
|||
:
Нравится:
Не нравится:
|
|||
16.12.2016, 13:52 |
|
Остановка потоков сервиса на период сборки мусора.
|
|||
---|---|---|---|
#18+
skyANAЛисты заменить на массивы Однофигственно. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.12.2016, 16:11 |
|
Остановка потоков сервиса на период сборки мусора.
|
|||
---|---|---|---|
#18+
Изопропилхороший совет для hello, world! Это как вскрыть тебе голову, чтобы разобраться, почему у тебя плохое настроение. Очень хороший совет для любых проектов. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.12.2016, 16:12 |
|
Остановка потоков сервиса на период сборки мусора.
|
|||
---|---|---|---|
#18+
_r2003Как раз эти задержки и являются порблемой. Отказаться от сборки мусора? Не вариант. Снизить количество мусора -- вариант. Кеширование! ... |
|||
:
Нравится:
Не нравится:
|
|||
16.12.2016, 16:13 |
|
Остановка потоков сервиса на период сборки мусора.
|
|||
---|---|---|---|
#18+
_r2003, Ещё можно... не, нужно, провести профилирование. Что конкретно является источником мусора. Мы для профилирования используем dotTrace, отличное средство для ловли причин "blocking GC". ... |
|||
:
Нравится:
Не нравится:
|
|||
16.12.2016, 16:15 |
|
Остановка потоков сервиса на период сборки мусора.
|
|||
---|---|---|---|
#18+
hVosttСнизить количество мусора -- вариант как количество мусора влияет на построение графа доступных объектов? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.12.2016, 16:26 |
|
Остановка потоков сервиса на период сборки мусора.
|
|||
---|---|---|---|
#18+
_r2003, помимо очевидных советов gcmode и loh могут помочь наверное. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.12.2016, 16:38 |
|
Остановка потоков сервиса на период сборки мусора.
|
|||
---|---|---|---|
#18+
Изопропилкак количество мусора влияет на построение графа доступных объектов? 1. Вот здесь подробно написано https://msdn.microsoft.com/ru-ru/library/ee787088(v=vs.110).aspx 2. Делаем тестовый проект, начинаем генерировать разнокалиберный мусор и смотрим когда и как часто запускается уборка мусора. Чем быстрее заполняется поколение 0, тем быстрее наступит уборка мусора. Если программа создаёт очень много объектов, которые используются очень короткое время, то GC срабатывает чаще. Искоренить это можно, снизив количество таких объектов. Да, можно поиграть с переиспользованием памяти, со структурами, но это вовсе не бесплатно. Ручное управление GC чаще приносит вред, чем пользу. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.12.2016, 16:48 |
|
Остановка потоков сервиса на период сборки мусора.
|
|||
---|---|---|---|
#18+
_r2003, Ещё могу посоветовать перейти на 4.6, начиная с 4.5 в .NET была проделана большая работа по оптимизации работы GC. В 4.6 были добавлены такие штуковины, как TryStartNoGCRegion и EndNoGCRegion, на определённом участке можно запретить, точнее, настойчиво рекомендовать не заниматься уборкой мусора. Больше информации о новых возможностях здесь: https://msdn.microsoft.com/en-us/library/ms171868(v=vs.110).aspx#v46 ... |
|||
:
Нравится:
Не нравится:
|
|||
16.12.2016, 16:53 |
|
Остановка потоков сервиса на период сборки мусора.
|
|||
---|---|---|---|
#18+
Нужно разбираться что это за 3гб. Если они подлежат сборке значит нужно ранить сборщик самостоятельно почаще. Если этор неподлежащиц сборке граф н6ужно выносить его в Large Object Heap. Что это за 3ГБ? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.12.2016, 17:23 |
|
Остановка потоков сервиса на период сборки мусора.
|
|||
---|---|---|---|
#18+
Вообще надо профайлером посмотреть каким-нибудь и все будет ясненько. вот тут можно посмотреть как пользоваться бесплатной perfVew ... |
|||
:
Нравится:
Не нравится:
|
|||
16.12.2016, 17:55 |
|
Остановка потоков сервиса на период сборки мусора.
|
|||
---|---|---|---|
#18+
Спасибо, за советы. 3Гб - это конкурентные словари, со справочной информацией. ConcurrentDictionary<int,Справочник> Они нужны для обработки данных. Удалить их из сервиса нельзя. Как их перенести в Large Object Heap? Дело в том, что в целом создается и удаляется не значительное количество объектов. Из входящего набора байт формируется объект. Дальше этот объект обрабатывается и освобождается. Таких объектов не много. Важно что ОЗУ 32 гига, из них занято только четыре. Не понятно, зачем делать очистку мусора куждую минуту. В моем понимание, на раз в каждые 8 часов, памяти должно хватать. Спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.12.2016, 18:15 |
|
Остановка потоков сервиса на период сборки мусора.
|
|||
---|---|---|---|
#18+
_r2003, Чтоб перенести в LOH что-то нужно создать свой из непрырывный блок памяти больше 85kb и уже в этом блоке размещать свои объекты. Можно почитать например здесь. http://stackoverflow.com/questions/2510975/c-sharp-object-pooling-pattern-implementation Можно попробовать GC с concurrent на Background переставить. Но нужно убедиться что дело в словарях. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.12.2016, 18:37 |
|
Остановка потоков сервиса на период сборки мусора.
|
|||
---|---|---|---|
#18+
_r2003Спасибо, за советы. 3Гб - это конкурентные словари, со справочной информацией. ConcurrentDictionary<int,Справочник> Они нужны для обработки данных. Удалить их из сервиса нельзя. Как их перенести в Large Object Heap? . . Если они используются постоянно, то их не надо никуда переносить, их нужно сделать рутами, чтоб gc их не трогал. Тем более как ты говоришь памяти много ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2016, 05:19 |
|
Остановка потоков сервиса на период сборки мусора.
|
|||
---|---|---|---|
#18+
PallarisЕсли они используются постоянно, то их не надо никуда переносить, их нужно сделать рутами, чтоб gc их не трогал. Тем более как ты говоришь памяти много Если ссылки на 3Гб достижимые, то GC их трогать не будет. Надо смотреть профайлером, чего он там колбасит. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2016, 20:05 |
|
Остановка потоков сервиса на период сборки мусора.
|
|||
---|---|---|---|
#18+
еще можно попробовать заменить конкурентдикты на обычные с локами. Частенько выходит и быстрее и менее прожорливо. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2016, 20:13 |
|
Остановка потоков сервиса на период сборки мусора.
|
|||
---|---|---|---|
#18+
Denis.еще можно попробовать заменить конкурентдикты на обычные с локами. Частенько выходит и быстрее и менее прожорливо. В режиме многопоточного частого чтения и периодической записью не будет. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2016, 20:35 |
|
Остановка потоков сервиса на период сборки мусора.
|
|||
---|---|---|---|
#18+
Denis.еще можно попробовать заменить конкурентдикты на обычные с локами. Частенько выходит и быстрее и менее прожорливо. Тут проблемы в другом 20013065 , объектов очень много поэтому сборка мусора томозит. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2016, 20:46 |
|
Остановка потоков сервиса на период сборки мусора.
|
|||
---|---|---|---|
#18+
в свое время компания трейдер - елмакс двинула проект disruptor, так вот, там они отказались вообще от уборки мусора. архитектурное решение довольно интересное. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2016, 12:57 |
|
Остановка потоков сервиса на период сборки мусора.
|
|||
---|---|---|---|
#18+
Где-то в степи, на C++ небось перешли? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2016, 13:55 |
|
Остановка потоков сервиса на период сборки мусора.
|
|||
---|---|---|---|
#18+
hVosttDenis.еще можно попробовать заменить конкурентдикты на обычные с локами. Частенько выходит и быстрее и менее прожорливо. В режиме многопоточного частого чтения и периодической записью не будет. Это надо профайлить. Так не угадаешь. + есть вариант ридерарйтерлок. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2016, 14:44 |
|
Остановка потоков сервиса на период сборки мусора.
|
|||
---|---|---|---|
#18+
Dima TDenis.еще можно попробовать заменить конкурентдикты на обычные с локами. Частенько выходит и быстрее и менее прожорливо. Тут проблемы в другом 20013065 , объектов очень много поэтому сборка мусора томозит. Код: c# 1. 2. 3. 4. 5. 6. 7. 8.
Так 700 мегабайт Код: c# 1.
Так 200. Его 3 гб могут превратиться в 500 мб. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2016, 14:54 |
|
Остановка потоков сервиса на период сборки мусора.
|
|||
---|---|---|---|
#18+
Denis.Так 700 мегабайт Код: c# 1.
Так 200. Его 3 гб могут превратиться в 500 мб. там реально byte используется? Если так и int только положительный, то можно так Код: c# 1.
займет 2 Гб и никакой сборки мусора не понадобится. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2016, 16:47 |
|
Остановка потоков сервиса на период сборки мусора.
|
|||
---|---|---|---|
#18+
Denis.Так 200. Его 3 гб могут превратиться в 500 мб. Настолько жирно-толсто-натянутый пример, что даже не смешно. Байты в словаре? Серьёзно!? А чего так жирно, давай биты! ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2016, 17:09 |
|
Остановка потоков сервиса на период сборки мусора.
|
|||
---|---|---|---|
#18+
hVostt, откуда мне знать что у него там за данные лежат, наоборот демонстрирует особенности словарей оставляя данные за скобками ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2016, 20:00 |
|
Остановка потоков сервиса на период сборки мусора.
|
|||
---|---|---|---|
#18+
Denis.hVostt, откуда мне знать что у него там за данные лежат, наоборот демонстрирует особенности словарей оставляя данные за скобками Количество объектов не меняется. Проблема у тебя в количестве , а не в памяти которую они занимают. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2016, 20:57 |
|
Остановка потоков сервиса на период сборки мусора.
|
|||
---|---|---|---|
#18+
Dima TDenis.hVostt, откуда мне знать что у него там за данные лежат, наоборот демонстрирует особенности словарей оставляя данные за скобками Количество объектов не меняется. Проблема у тебя в количестве , а не в памяти которую они занимают. У меня проблемы нету. А у тс может быть проблема и в том и в том. Сборку вызывает давление на память, а не количество бесхозных рутов. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2016, 21:19 |
|
Остановка потоков сервиса на период сборки мусора.
|
|||
---|---|---|---|
#18+
Denis.Сборку вызывает давление на память, а не количество бесхозных рутов. Это не правда. И ты не прав. Влияет и давление на память, и количество объектов в 0-м поколении. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.12.2016, 06:44 |
|
Остановка потоков сервиса на период сборки мусора.
|
|||
---|---|---|---|
#18+
Denis.откуда мне знать что у него там за данные лежат, наоборот демонстрирует особенности словарей оставляя данные за скобками Ты взял заведомо некорректный пример, который весьма далёк от жизни. Всё что ты выяснил, это то, что ConcurrentDictionary потребляет дополнительную память. И это никогда не скрывалось, всё имеет свою цену. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.12.2016, 06:47 |
|
Остановка потоков сервиса на период сборки мусора.
|
|||
---|---|---|---|
#18+
Denis.Dima Tпропущено... Количество объектов не меняется. Проблема у тебя в количестве , а не в памяти которую они занимают. У меня проблемы нету. А у тс может быть проблема и в том и в том. Сборку вызывает давление на память, а не количество бесхозных рутов. Согласен, но так понижается частота сборки мусора, а у ТСа проблемы из-за времени одной сборки. Теоретически общее количество объектов при использовании Dictionary может быть меньше, мы же не знаем что там дополнительно создается для работы самих Dictionary/ConcurrentDictionary. Только непонятно как это померить. Не нашел как посмотреть сколько объектов создано на текущий момент. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.12.2016, 07:19 |
|
Остановка потоков сервиса на период сборки мусора.
|
|||
---|---|---|---|
#18+
hVosttDenis.Сборку вызывает давление на память, а не количество бесхозных рутов. Это не правда. И ты не прав. Влияет и давление на память, и количество объектов в 0-м поколении. Я сомневаюсь что у него 100мс чистится 0 поколение. А можно ссылку на источник что колво объектов важно? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.12.2016, 08:54 |
|
Остановка потоков сервиса на период сборки мусора.
|
|||
---|---|---|---|
#18+
Pallaris, Как это делается? Как сделать словари рутами? Спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.12.2016, 09:52 |
|
Остановка потоков сервиса на период сборки мусора.
|
|||
---|---|---|---|
#18+
_r2003Pallaris, Как это делается? Как сделать словари рутами? Товарищ hVostt уже писал 20011426 - кэширование, как вариант - реализовать какой-то синглетон-сервис, который будет в себе хранить ссылки на объекты словарей в течении всей жизни приложения. По необходимости обращаться к сервису за нужными словарями. Кстати, это 100% инфа, что приложение приунывает из-за сборки мусора? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.12.2016, 10:17 |
|
Остановка потоков сервиса на период сборки мусора.
|
|||
---|---|---|---|
#18+
Сделать один/набор объектов в LOH с переиспользованием уже предлагали? Вижу в обсуждении кэши - сразу скажу, что они как раз приводят к риску сбора мусора в не-эфемерных поколениях, что по сути своей трагедия для ТС. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.12.2016, 11:08 |
|
Остановка потоков сервиса на период сборки мусора.
|
|||
---|---|---|---|
#18+
y.dev.netСделать один/набор объектов в LOH с переиспользованием уже предлагали? Вижу в обсуждении кэши - сразу скажу, что они как раз приводят к риску сбора мусора в не-эфемерных поколениях, что по сути своей трагедия для ТС. Переиспользование имеет смысл в огромной, массированной и быстрой текучке данных, например, загрузка данных блоками в режиме автомата. Если используются одни и те же данные, то единственно верным будет организация грамотного кеширования. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.12.2016, 11:16 |
|
Остановка потоков сервиса на период сборки мусора.
|
|||
---|---|---|---|
#18+
Denis.А можно ссылку на источник что колво объектов важно? https://msdn.microsoft.com/ru-ru/library/ee787088(v=vs.110).aspx MSDNЕсли выполняется фоновая сборка мусора и в поколении 0 размещено достаточное количество объектов, среда CLR выполняет высокоприоритетную сборку мусора для поколения 0 или поколения 1. Информация подтверждается и на других источниках. Информация подтверждается испытаниями, для разных версий фреймворка и при разных условиях это предельное количество плавает, но оно существует. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.12.2016, 11:18 |
|
Остановка потоков сервиса на период сборки мусора.
|
|||
---|---|---|---|
#18+
y.dev.netВижу в обсуждении кэши - сразу скажу, что они как раз приводят к риску сбора мусора в не-эфемерных поколениях, что по сути своей трагедия для ТС. Какой ещё риск? Если данные лежат в кеше, то GC их собирать не будет. Если данные вытесняются из кеша, значит достиг предел использования памяти. Либо заданное в настройках ограничение достигнуто, или реально свободной памяти становится мало. При чём тут GC? Это уже обсуждение механики работы кеша. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.12.2016, 11:21 |
|
Остановка потоков сервиса на период сборки мусора.
|
|||
---|---|---|---|
#18+
hVosttПереиспользование имеет смысл в огромной, массированной и быстрой текучке данных, например, загрузка данных блоками в режиме автомата. У ТС, насколько я понял, и есть текучка в виде проксинга tcp запросов и требование предотвратить любые остановки на GC. В вашем описании кэширования оно не сильно отличается от переиспользования, имхо. Только вы допускаете попадание этого кэша в 2-е поколение, а я за "сразу в LOH". ... |
|||
:
Нравится:
Не нравится:
|
|||
19.12.2016, 11:21 |
|
Остановка потоков сервиса на период сборки мусора.
|
|||
---|---|---|---|
#18+
hVosttКакой ещё риск? Риск такой, что в кэше по ключу создается другой объект. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.12.2016, 11:23 |
|
Остановка потоков сервиса на период сборки мусора.
|
|||
---|---|---|---|
#18+
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 ... |
|||
:
Нравится:
Не нравится:
|
|||
19.12.2016, 11:33 |
|
Остановка потоков сервиса на период сборки мусора.
|
|||
---|---|---|---|
#18+
y.dev.netУ ТС, насколько я понял, и есть текучка в виде проксинга tcp запросов и требование предотвратить любые остановки на GC. В вашем описании кэширования оно не сильно отличается от переиспользования, имхо. Только вы допускаете попадание этого кэша в 2-е поколение, а я за "сразу в LOH". Не согласен. Всё имеет свою цену. Можно убить время и выяснить потом, что проблема тормозов вовсе не из-за работы GC, или не только из-за него. Сразу в LOH звучит, также как переписать всё на C++. Может оно вообще все проблемы порешает ... |
|||
:
Нравится:
Не нравится:
|
|||
19.12.2016, 11:34 |
|
Остановка потоков сервиса на период сборки мусора.
|
|||
---|---|---|---|
#18+
_r2003, Пробовал на 4.6 перейти? Можешь это сделать на тестовом стенде или это проблематично? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.12.2016, 11:34 |
|
Остановка потоков сервиса на период сборки мусора.
|
|||
---|---|---|---|
#18+
y.dev.netРиск такой, что в кэше по ключу создается другой объект. Это не правильная работа с кешем. Зачем создавать там другой объект, если там уже есть объект по ключу? Смысл кеша как раз в том, что НЕ создавать объект, а взять его из кеша. Инвалидация кеша вопрос другой. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.12.2016, 11:36 |
|
Остановка потоков сервиса на период сборки мусора.
|
|||
---|---|---|---|
#18+
hVosttНе согласен. Всё имеет свою цену. Можно убить время и выяснить потом, что проблема тормозов вовсе не из-за работы GC, или не только из-за него. Сразу в LOH звучит, также как переписать всё на C++. Может оно вообще все проблемы порешает Ну, я исхожу исключительно из информации, которую дал ТС, и полагаю, что его данные верные :) Т.е. проблема именно в GC и только в нем. А так, конечно, нужно точно знать в чем конкретно проблема, чтобы ее решать... ... |
|||
:
Нравится:
Не нравится:
|
|||
19.12.2016, 11:38 |
|
Остановка потоков сервиса на период сборки мусора.
|
|||
---|---|---|---|
#18+
hVosttЭто не правильная работа с кешем. Зачем создавать там другой объект, если там уже есть объект по ключу? Смысл кеша как раз в том, что НЕ создавать объект, а взять его из кеша. Инвалидация кеша вопрос другой. Ну так потому я и пишу "риск". ... |
|||
:
Нравится:
Не нравится:
|
|||
19.12.2016, 11:41 |
|
Остановка потоков сервиса на период сборки мусора.
|
|||
---|---|---|---|
#18+
hVosttDenis.А можно ссылку на источник что колво объектов важно? https://msdn.microsoft.com/ru-ru/library/ee787088(v=vs.110).aspx MSDNЕсли выполняется фоновая сборка мусора и в поколении 0 размещено достаточное количество объектов, среда CLR выполняет высокоприоритетную сборку мусора для поколения 0 или поколения 1. Информация подтверждается и на других источниках. Информация подтверждается испытаниями, для разных версий фреймворка и при разных условиях это предельное количество плавает, но оно существует. В английской версии документа написано иное. А можно ссылки на другие источники или суть эксперимента? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.12.2016, 11:43 |
|
Остановка потоков сервиса на период сборки мусора.
|
|||
---|---|---|---|
#18+
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/ ... |
|||
:
Нравится:
Не нравится:
|
|||
19.12.2016, 11:44 |
|
Остановка потоков сервиса на период сборки мусора.
|
|||
---|---|---|---|
#18+
_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 ... |
|||
:
Нравится:
Не нравится:
|
|||
19.12.2016, 12:50 |
|
Остановка потоков сервиса на период сборки мусора.
|
|||
---|---|---|---|
#18+
hVostt, Да, это было изначально включено. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.12.2016, 12:52 |
|
Остановка потоков сервиса на период сборки мусора.
|
|||
---|---|---|---|
#18+
_r2003, Короче надо профилировать, какие-то тычки пальцем в небо, то в LOH тут рекомендуют всё запихать и дело с концом, то ещё что-нибудь. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.12.2016, 12:52 |
|
Остановка потоков сервиса на период сборки мусора.
|
|||
---|---|---|---|
#18+
как сборщик может зависать, если у него есть timeout по истечению которого он прервётся? столько всяких предложений, думаю без анализа и диагностики тут еще будет 100500 предположений? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.12.2016, 13:00 |
|
Остановка потоков сервиса на период сборки мусора.
|
|||
---|---|---|---|
#18+
Roman Mejtes, в джава на эти грабли наступили несколько раньше, мусор может образовываться быстрее. чем работает сборщик ... |
|||
:
Нравится:
Не нравится:
|
|||
19.12.2016, 13:55 |
|
Остановка потоков сервиса на период сборки мусора.
|
|||
---|---|---|---|
#18+
Про режимы LowLatency и SustainedLowLatency советовали? LowLatency Для приложений, которые осуществляют операции, чувствительные ко времени выполнения, для которых перерывы в работе из-за сборки мусора могут иметь резко отрицательные последствия. Например, это приложения, которые выполняют функции анимации или получения данных. SustainedLowLatency Для приложений, которые осуществляют операции, чувствительные ко времени выполнения, время выполнения которых ограничено, но может быть достаточно продолжительным, для которых перерывы в работе из-за сборки мусора могут иметь резко отрицательные последствия. Например, приложения, требующие быстрого отклика при изменении рыночных показателей в торговую сессию. Этот режим использует больший размер управляемой кучи, нежели другие режимы. Так как он не сжимает управляемую кучу, возможен больший уровень фрагментации. Необходимо обеспечить достаточный объем памяти. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.12.2016, 11:59 |
|
|
start [/forum/topic.php?all=1&fid=20&tid=1400130]: |
0ms |
get settings: |
10ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
49ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
77ms |
get tp. blocked users: |
2ms |
others: | 266ms |
total: | 442ms |
0 / 0 |