Регистрация

Security Normalizer на рабочей базе

Ответы на вопросы технического характера

Модератор: Модераторы форума

Гуру
Аватара пользователя
Сообщения: 778
Зарегистрирован: 05 июн 2009, 15:43
Откуда: Иркутск

Сообщение Irhen » 17 мар 2011, 11:00

Нужно запросить у службы технической поддержки DocsVision.

Real ГУРУ
Сообщения: 276
Зарегистрирован: 03 сен 2008, 22:48
Откуда: Москва

Сообщение Дуб Дубыч » 18 мар 2011, 08:05

Довелось поразбираться с SecurityNormalizer и вот что выяснилось:
1. Утилитка, помимо чистки неиспользуемых дескрипторов, загружает все (!) используемые дескрипторы себе в память, распаковывает каждый, запаковывает обратно (видимо при этом и происходит "нормализация") и отправляет обратно на базу.
Мне этот вариант не глянулся, ибо время тогда следовало ожидать немалого и я аккуратненько передрал все кроме этого шага в обычный SQL-скрипт.
2. Скрипт мой успешно отработал на работающей базе (правда с некоторым шаманством) и минут за 10 превратил 17 млн. дескрипторов в 500 тыс. (размер таблицы в базе с 50 ГБ до 1 ГБ) и вроде все было хорошо.
3. У одного единственного клиента начались глюки - то файл не прикладывается, то БП не запускается - анализ логов показал что виною нарушение разных FK на dvsys_security.
Перепроверил все что можно - нормальные везде sdid, везде с FK все путем, однако application server упорно гонит какой-то sdid которого в таблице нет.
Делать нечего - полез изучать код application server и обнаружил, что он кэширует дескрипторы - видимо чтобы не плодить дупликаты - скажем если пользователь два раза создает карточку по одному и тому же шаблону в одной и той же папке - то первый раз дескриптор будет создан новый, а второй раз - он будет взят из кэша. Однако, из-за того, что карточка как правило шустренько подхватывается процессом, который корежит ее безопасность, то со стороны базы кажется что дексриптор не используется.
Выходит, что на активной базе (в которой работают пользователи) запускать normalizer нельзя - обязательно нужно рестартнуть iis после окончания ее работы.

P.S. Кстати, размер кэша дескрипторов - это настройка, которой можно как-то играть. Кажется (гарантировать не буду) задается через секцию appsettings в WebService\web.config параметром MaxCacheSize. По умолчанию равна 10000 (дескрипторов в кэше).

P.P.S. Мне кстати iis перезапускать было не с руки, поэтому я просто обманул кэш, изменив безопасность у проблемных объектов.
Толерантность - мать некомпетентности!!!!!!!

Гуру
Аватара пользователя
Сообщения: 778
Зарегистрирован: 05 июн 2009, 15:43
Откуда: Иркутск

Сообщение Irhen » 18 мар 2011, 08:46

Мне этот вариант не глянулся, ибо время тогда следовало ожидать немалого и я аккуратненько передрал все кроме этого шага в обычный SQL-скрипт.

Да, впечатляет...

Любитель
Сообщения: 35
Зарегистрирован: 13 дек 2010, 23:35

Сообщение yartkin » 18 мар 2011, 14:44

Это точно! :)

Опытный
Сообщения: 106
Зарегистрирован: 03 май 2011, 17:42

Re: Security Normalizer на рабочей базе

Сообщение Jfm » 06 окт 2016, 13:40

Добрый день.
Обращаюсь к тем, кто разбирался в работе Security Normalizer и запускал эту утилиту.
Я знаю, что на практике, как правило, ее работа уменьшает размер таблицы dvsys_security.
Вопрос: теоретически, может ли в результате работы данной утилиты УВЕЛИЧИТЬСЯ размер таблицы dvsys_security?
При этом неиспользуемые дескрипторы были удалены заранее sql-скриптом.

Опытный
Сообщения: 106
Зарегистрирован: 03 май 2011, 17:42

Re: Security Normalizer на рабочей базе

Сообщение Jfm » 07 окт 2016, 11:33

Поправка.
Таблица не увеличилась.
Просто размер остался неизменным. Как мне кажется, такого быть не должно.
Возможно, проблема в том, что мы используем нормалайзер не той версии. Насколько я знаю, утилиту обновляют при появлении новых версий. Кто-нибудь в курсе, в чем отличия между утилитами SecurityNormalizer для разных версий Docsvision?

Гуру
Аватара пользователя
Сообщения: 559
Зарегистрирован: 16 сен 2009, 17:17
Откуда: И всё-таки она порвалась

Re: Security Normalizer на рабочей базе

Сообщение nubobap » 11 окт 2016, 15:52

Для уменьшения физического размера нужно шринкнуть базу
Запомните, наша цель - Человек!
Целься....
ПЛИ!

Опытный
Сообщения: 106
Зарегистрирован: 03 май 2011, 17:42

Re: Security Normalizer на рабочей базе

Сообщение Jfm » 30 окт 2017, 13:59

Добрый день.
При помощи Reflector мы посмотрели код Security Normalizer, и сильно удивились.
Неужели и правда данная утилита ВСЮ таблицу dvsys_security (имеется в виду, используемые дескрипторы) постепенно загружает в кэш m_securityCache?!?!
А если таблица dvsys_security весит десятки Гб (как у нас), то получается, данная утилита неприменима, т.к. оперативной памяти не хватит под ВСЕ дескрипторы и утилита вывалится с ошибкой "нехватка памяти".
Кто-нибудь кроме нас сталкивался с такой ошибкой при применении утилиты?

Гуру
Аватара пользователя
Сообщения: 419
Зарегистрирован: 23 дек 2009, 16:20

Re: Security Normalizer на рабочей базе

Сообщение KYCTAPb » 21 дек 2017, 15:56

Добрый день.

А что вообще эта утилита делает? Удаляет из dvsys_security строки в которых [ID] отсутствует в [SDID] таблиц dvsys_instances и dvsys_instances_archive?
Или что-то ещё?
PS: поделитесь, кстати, кто-нибудь этой утилитой?

Новичок
Аватара пользователя
Сообщения: 1
Зарегистрирован: 22 май 2014, 21:30

Re: Security Normalizer на рабочей базе

Сообщение g0gan » 10 янв 2018, 18:02

KYCTAPb писал(а):Добрый день.

А что вообще эта утилита делает? Удаляет из dvsys_security строки в которых [ID] отсутствует в [SDID] таблиц dvsys_instances и dvsys_instances_archive?
Или что-то ещё?
PS: поделитесь, кстати, кто-нибудь этой утилитой?


Данная утилита решает следующие задачи:
1) Нормализует дескрипторы безопасности (удаляет избыточные ACЕ, размер дескриптора становится меньше).
2) Выявляет дублированные дескрипторы, переводит ссылки с них на оригинальный дескриптор.
3) Удаляет неиспользуемые и дублированные дескрипторы.
Вложения
SecurityNormalizer.zip
(43.91 КБ) Скачиваний: 34

Гуру
Аватара пользователя
Сообщения: 419
Зарегистрирован: 23 дек 2009, 16:20

Re: Security Normalizer на рабочей базе

Сообщение KYCTAPb » 12 янв 2018, 08:07

Спасибо, попробую после выходных.

PS: А эта версия утилиты точно пойдет под 4.5.1988? В конфиге у неё написано sku=".NETFramework,Version=v4.0"

Пред.

Вернуться в Технические вопросы по Docsvision

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 6