|
![]() |
#1 |
Участник
|
Накопал причину, но в итоге опять уперся, и теперь опять очень нужны ваши советы и мнения
Итак, память расходуется и не возвращается, когда в режиме runas выполняется какой-нибудь queryRun. Точнее, после того как выполняется queryRun.next() - в этот момент в течение нескольких секунд уходит примерно 20 мб. И вернуть их ну никак не получается. С учетом того что не под каждым пользователем такое происходит, пока напрашивается вывод что память требуется под определение прав. Не знаю, у меня пока других соображений нет, но например когда я рядового пользователя включил в группу Admin то память на его queryRun сразу перестала расходоваться. Собственно Workflow тут и не причем как таковой, не в нем конкретно проблема, а в этой странной особенности Аксапты. Так что жду снова ваших советов, кто каким опытом поделится, мне пока совершенно ничего на ум не приходит кроме как плюнуть на runas и тупо исполнять в обычном режиме, но это хотелось бы в последнюю очередь |
|
![]() |
#2 |
Участник
|
А у вас RLS используется ? Если это так, надо смотреть какой у вас билд, как минимум проблемы с памятью были до ru4.
Безопасность на уровне записей Если rls есть и в указанном методе его отключить не критично, то можно отключить через св-во query.recordLevelSecurity(false). Другое дело, что такая правка будет работать только в одном методе, похорошему обновить бы вам ядро, если такая возможность есть.
__________________
Sergey Nefedov |
|
|
За это сообщение автора поблагодарили: FrolovAndy (1). |
![]() |
#3 |
Участник
|
Цитата:
Сообщение от SRF
![]() А у вас RLS используется ? Если это так, надо смотреть какой у вас билд, как минимум проблемы с памятью были до ru4.
Безопасность на уровне записей Если rls есть и в указанном методе его отключить не критично, то можно отключить через св-во query.recordLevelSecurity(false). Другое дело, что такая правка будет работать только в одном методе, похорошему обновить бы вам ядро, если такая возможность есть. Причем у нас реально RLS очень навороченный, так что я не удивляюсь в этом случае такому расходу памяти Можно конечно и поотключать rls во всех таких ситуациях где queryRun на runas выполняется, но это для нас как самый крайний вариант. Проблема-то не в том что память расходуется, а в том что именно не возвращается когда уже не нужна процессу. Причем в этом случае никакие средства сборки мусора получается не работают, поскольку на queryRun памятью управляет ядро а не программный код. Поэтому прежде всего вопрос, может есть какие-то средства, на уровне каких-то системных процедур, которые могут принудительно дать команду освободить память? Причем как я понимаю это возможно сделать пока runas ещё работает, поскольку как только он закончится все концы наверно теряются И насчет билдов вопрос. Наверно самым правильным в нашем случае будет и правда обновиться, и ничего не химичить. Но я этой темой почти не владею. Поэтому начнем с простого - подскажите а как этот билд ядра определяется? Я обращался в админам, они тоже мало что знают, сказали только что установлен ServicePack 1 RollUp 5, но это для клиента. А как для АОСа тут вообще никто не знает |
|