AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
DAX
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск Все разделы прочитаны

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 09.02.2022, 22:05   #1  
Masel is offline
Masel
Участник
 
39 / 537 (18) +++++++
Регистрация: 19.09.2007
Я эту проблему решил потом. Нужно отключить серверную сборку мусора. Тормозить она насколько я помню начинает, когда включается сборка при большом потреблении памяти. С клиентской сборкой она включается на малых величинах и проблемы не возникает.
За это сообщение автора поблагодарили: fed (3), Vadik (1), Logger (1), SRF (5).
Старый 10.02.2022, 08:07   #2  
SRF is offline
SRF
Участник
MCBMSS
Axapta Retail User
 
376 / 562 (19) +++++++
Регистрация: 08.08.2007
Записей в блоге: 1
Да, отключение серверной сборки мусора рассматривается как один из возможных вариантов, удобно не надо в коде ничего менять, я даже немного поигрался с ним в прод окружении.

Первоначально проверял на железном АОСе, там была забавная ситуация, перекинули туда только эту ПО, поставили 64 потока, ну думаем сейчас будет космос, но не тут то было - в режиме сервера он за считанные минуты съел +30ГБ и стал работать очень медленно, как результат скорость обработки документов была ниже в 2-3 раза, чем на виртуальном

Переключил в режим клиента, объем памяти не поднимался выше 10 ГБ, даже при работе несколько часов и скорость обработки стала в 2-3 раза быстрее, чем на виртуальном, при этом глюков с тормозами в queryValue и т.д. не наблюдалось.

Включили на виртуальном, и обнаружился интересный артефакт - ПО, которые работали не под админом стали работать существенно медленнее (у клиента почти все ПО работают под админом, но есть парочка, которые работают под выделенными учетками), появились постоянные запросы к метаданным и правам (обычно такую картинку наблюдаешь при изменении прав, которая в некоторых случаях приводит к фризу АОСа, но там по крайней мере понятно, что является источником, типа права поменяли, кеш обновляется, можно через axutil обновить кеш и т.д.), здесь возможно как то кеш начал регулярно обновляться, возможно просто что-то другое совпало, но предметно уже не анализировали.
__________________
Sergey Nefedov
Старый 10.02.2022, 11:05   #3  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,987 / 3273 (117) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Цитата:
Сообщение от Masel Посмотреть сообщение
Я эту проблему решил потом. Нужно отключить серверную сборку мусора. Тормозить она насколько я помню начинает, когда включается сборка при большом потреблении памяти. С клиентской сборкой она включается на малых величинах и проблемы не возникает.
А где отключали?
На аосе?
На клиенте?
Старый 10.02.2022, 14:10   #4  
Masel is offline
Masel
Участник
 
39 / 537 (18) +++++++
Регистрация: 19.09.2007
Цитата:
Сообщение от Logger Посмотреть сообщение
А где отключали?
На аосе?
На клиенте?
Отключал на аосе. В bin папке аоса в конф. файле меняется <gcServer enabled="false" />.
На клиенте я даже не знаю, есть ли такая настройка, ни разу не проверял. Но с клиентом проще. Там обычно все в один поток и пользователь может переоткрыть клиент, пока жалоб на клиент не поступало. Все тяжелые операции обычно на сервере.
Эта настройка уже несколько лет работает в продуктиве на всех аосах, и клиентских и пакетниках. Я за это время особо негативных побочных эффектов не увидел, хотя лучше наверное включать только если реально диагностируется проблема.

Я когда когда эту проблему исследовал, то наиграл воспроизводимый пример. В этом примере в таблицу InventParameters было добавлено несколько тяжелых полей и были частые обращения InventParameters::find() в джобе. Есть определенная граница в размере таблицы, после которой все начинает жутко тупить. Я предположил, что как то плохо собирается мусор от больших курсоров. Но возможно это не единственный триггер, и четких критериев нет.

Уже после того как я этот параметр нашел мне удалось этот пример отправить в майкрософт и мне в итоге прислали рекомендацию как раз этот параметр и использовать.

Сам параметр позиционируется как опция для тестовых сред для экономии памяти, но имеет большое влияние на работу нагруженных пакетников.
За это сообщение автора поблагодарили: sukhanchik (10).
Старый 10.02.2022, 16:11   #5  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,987 / 3273 (117) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Цитата:
Сообщение от Masel Посмотреть сообщение
На клиенте я даже не знаю, есть ли такая настройка, ни разу не проверял.
Есть (Потому я и спросил. Из описания не понял, ваши проблемы только в пакетах наблюдались или и в клиентском коде тоже. Ну теперь разъяснили)

см.
Ax32.exe.config

Но там параметр не выставлен. Т.е. используется по умолчанию.
Старый 10.02.2022, 18:49   #6  
vmoskalenko is offline
vmoskalenko
Участник
Аватар для vmoskalenko
 
145 / 334 (12) ++++++
Регистрация: 25.01.2007
Адрес: Toronto
Цитата:
Сообщение от Masel Посмотреть сообщение
Я когда когда эту проблему исследовал, то наиграл воспроизводимый пример. В этом примере в таблицу InventParameters было добавлено несколько тяжелых полей и были частые обращения InventParameters::find() в джобе. Есть определенная граница в размере таблицы, после которой все начинает жутко тупить. Я предположил, что как то плохо собирается мусор от больших курсоров. Но возможно это не единственный триггер, и четких критериев нет.
Проверьте какой уровень кеширования выставлен в таблице InventParameters

Если установлено Entire Table то вся таблица всасывается в локальную память. Проблема в том что той памяти выделяется аж 128Кбайт (если память не изменяет).
В Dynamics Perf есть отдельный query на эту тему.
Старый 10.02.2022, 20:15   #7  
Masel is offline
Masel
Участник
 
39 / 537 (18) +++++++
Регистрация: 19.09.2007
Цитата:
Сообщение от vmoskalenko Посмотреть сообщение
Проверьте какой уровень кеширования выставлен в таблице InventParameters

Если установлено Entire Table то вся таблица всасывается в локальную память. Проблема в том что той памяти выделяется аж 128Кбайт (если память не изменяет).
В Dynamics Perf есть отдельный query на эту тему.
Не, это вообще не влияло, я тоже об этом подумал. Я пробовал вообще отключать кеширование на таблице. Просто создается курсор InventParameters и система не может от него освободить память быстро, не понятно почему.
Конкретно с этой таблицей я разделил ее на две. Тяжелые кастомные поля убрал в отдельную таблицу. Но всю систему так не проверишь и главное нет четких критериев, поэтому параметр все таки лучшее решение в реальной жизни, если столкнулись с таким.

Последний раз редактировалось Masel; 10.02.2022 в 20:19.
За это сообщение автора поблагодарили: vmoskalenko (6).
Теги
garbage collector, gcserver, сборка мусора

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
emeadaxsupport: Documentation collection: Inplace upgrade MS Dynamcis AX 2012 RTM --> AX 2012 R2 CU7 Blog bot DAX Blogs 0 22.06.2014 01:19
axsa: MDM Adapter - Extending Dynamics AX 2012 R3 Master Data Management Blog bot DAX Blogs 0 22.05.2014 03:28
DAX: Official Dynamics AX 2012 R2 Content (update) - Where is it, and how can you find out about updates? Blog bot DAX Blogs 0 03.12.2012 11:11
Dynamics AX Sustained Engineering: Servicing of Dynamics AX 2012 and Dynamics AX 2012 Feature Pack Blog bot DAX Blogs 0 08.05.2012 23:12
dynamics-ax: Interview with Microsoft's Lachlan Cash on his new role, AX 2012 and more Blog bot DAX Blogs 6 22.04.2011 14:55
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра
Комбинированный вид Комбинированный вид

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 18:48.