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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 31.10.2007, 01:03   #1  
gl00mie is offline
gl00mie
Участник
MCBMSS
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,684 / 5813 (201) ++++++++++
Регистрация: 28.11.2005
Адрес: Москва
Записей в блоге: 3
Странно это все... Сейчас посмотрел на примере KR2, как вообще это ограничение работает, и получается примерно вот что.
  • AOS читает строковый параметр MaxMemPercentage из реестра, переводит в число, проверяет, чтоб оно не было больше 100, и прописывает себе в переменную, где по умолчанию значится 50.
  • При попытке нового клиента подключиться к AOS последний сначала выполняет проверку на то, не достигнут ли максимальный уровень использования ресурсов, т.е. количество одновременных подключений и размер используемой памяти.
    • Максимальное число подключений проверяется очень просто: у AOS'а есть счетчик, который он увеличивает/уменьшает на 1 с помощью функций InterlockedIncrement/InterlockedDecrement при каждом открытии и, соотв., закрытии нового соединения. Это значение сравнивается с переменной, которая по умолчанию равна 100 и может меняться через настройки в реестре. При превышении ее значения выводится соотв. сообщение в EventLog.
    • Максимальный объем используемой памяти проверяется следующим образом. По собственному дескриптору процесса AOS с помощью фунции GetProcessMemoryInfo() получает данные в виде структуры PROCESS_MEMORY_COUNTERS. В этой структуре он сравнивает поле QuotaPagedPoolUsage со значением своей переменной - максимального процента используемой памяти, - умноженной на 21474836 (т.е. в теории AOS расчитывает "потребить" до 2Gb из нерезидентного пула памяти). Если значение QuotaPagedPoolUsage больше, то выводится сообщение в EventLog, где для информации почему-то указывается QuotaNonPagedPoolUsage, т.е. текущий объем использованного резидентного пула памяти.
  • Eсли один из пределов достигнут, то новое подключение закрывается, и в EventLog опять же выводится сообщение о том, что по этой причине попытка подключения была отклонена.
Так вот, что у вас AOS пишет в EventLog? И, главное, вы уверены, что параметр MaxMemPercentage у вас для AOS'а прописан в реестре в нужной конфигурации и именно как строка - REG_SZ (об этом говорится в документации)?

Возможно, конечно, что воду мутит SmartHeap - надо будет отдельно проверить, как она по умолчанию настраивается AOS'ом.
Старый 05.11.2007, 15:37   #2  
Oleg V.Cat is offline
Oleg V.Cat
Участник
 
21 / 10 (1) +
Регистрация: 21.06.2007
Цитата:
Сообщение от gl00mie Посмотреть сообщение
Странно это все... Сейчас посмотрел на примере KR2, как вообще это ограничение работает, и получается примерно вот что.Так вот, что у вас AOS пишет в EventLog?
Если MaxMemPercentage не стоит - то пишет то, что положено. "MaxMemPercentage(50) has been reached. No more connections...". А если стоит - неопределенно. К примеру:

--------------------
Код:
Object Server NNN_NNNN: The database reported (session 32 (ZOG)): [Microsoft Business Solutions-Axapta] Unable to retrieve message for retval -1, ODBC call reason 
code 100, 
SQLSTATE = [™:?K]
Error message []. The SQL statement was: "SELECT A.NAME,A.SURNAME,A.ACCOUNTNUM,A.RECVERSION,101090 FROM PERSONTABLE A WITH( INDEX(I_50080ACCOUNTNUMIDX)) WHERE ((DATAAREAID=?) AND (ACCOUNTNUM=?)) OPTION(FAST 2)"
------------------------
Object Server NNN_NNNN: The database reported (session 54 (OBA)): [Microsoft][ODBC SQL Server Driver]Memory allocation failure. The SQL statement was: "SELECT A.ID,A.NAME,A.ENABLE,A.STARTUPMENU,A.STATUSLINEINFO,A.TOOLBARINFO,A.DEBUGINFO,A.AUTOINFO,A.AUTOUPDATE,A.GARBAGECOLLECTLIMIT,A.HISTORYLIMIT,A.MESSAGELIMIT,A.GENERALINFO,A.SHOWSTATUSLINE,A.SHOWTOOLBAR,A.DEBUGGERPOPUP,A.SHOWAOTLAYER,A.PASSWORD,A.OSACCOUNTNAME,A.STARTUPPROJECT,A.CONFIRMDELETE,A.CONFIRMUPDATE,A.REPORTFONTNAME,A.REPORTFONTSIZE,A.FORMFONTNAME,A.FORMFONTSIZE,A.PROPERTYFONTNAME,A.PROPERTYFONTSIZE,A.INFOLOGLEVEL,A.COMPANY,A.AUTOLOGOFF,A.QUERYTIMELIMIT,A.TRACEINFO,A.REPORTTOPMARGIN,A.REPORTBOTTOMMARGIN,A.REPORTLEFTMARGIN,A.REPORTRIGHTMARGIN,A.COMPILERWARNINGLEVEL,A.RECVERSION,A.RECID FROM USERINFO A WITH( INDEX(I_65531ID), NOLOCK) WHERE (ID=?) OPTION(FAST 2)"
-------------------------
Больше "история не сохранила". Потому как "после двух перезагрузок" было решено, что поведние при 50%, по крайней мере, предсказуемо.



Цитата:
Сообщение от gl00mie Посмотреть сообщение
И, главное, вы уверены, что параметр MaxMemPercentage у вас для AOS'а прописан в реестре в нужной конфигурации и именно как строка - REG_SZ (об этом говорится в документации)?
Да. Поставить 20% и посмотреть, что будет - не могу, и так уже пользователи "ведут себя весьма недружелюбно". Собираемся ставить еще один AOS и раскидывать пользователей...
Теги
ax3.0

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Рассылка писем в CRM: bug или я чего не понимаю? Alex2003 DAX: Программирование 2 18.06.2008 10:18
Ошибка в методе или я что-то не понимаю ? egorych DAX: Программирование 7 05.06.2008 15:02
Глюк orig() в 3-tier или я чего-то не понимаю? olesh DAX: Программирование 2 26.07.2007 13:09
не понимаю View Oleksandr DAX: Программирование 2 04.04.2007 11:32
Пробежался отладчиком по СВОДНОМУ планированию и ......... НЕ ПОНИМАЮ :( director DAX: Функционал 5 01.02.2006 14:05

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

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

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