Это один из часто задаваемых вопросов на экзамене «1С: Эксперт по технологическим вопросам».
Подробно о методе написано на ИТС («Анализ причин роста сеансовых данных» и «Помещение данных во временное хранилище»).
Попробуем рассмотреть кратко, что такое хранилище сеансовых данных.
Хранилище сеансовых данных — каталог на сервере «1С:Предприятие», которому установлено требование назначения функциональности «Сервис сеансовых данных». Если требования функциональности нет, то сеансовые данные распределяются по всем рабочим серверам.
Расположение каталога сеансовых данных можно определить по ключу «/d» в командной строке запуска службы сервера.
Обычно это файлы C:\Program Files (x86)\1cv8\srvinfo\reg_номерпорта\snccntx[guid]\snccntx*.dat .
Сеансовые данные образуются не только методами «ПоместитьВоВременноеХранилище», «ПоместитьФайл», «НачатьПомещениеФайла», но и в результате работы формы: после ввода значений в поля ввода, при последующих серверных вызовах, данные сбрасываются в хранилище сеансовых данных.
Хранилище сеансовых данных параллельно существует и в памяти операционной системы. С помощью технологии mapping данные файлов snccntx*.dat частично, в необходимом размере, отображаются в оперативную память.
Сеансовые данные постепенно устаревают — при закрытии формы, сеанса пользователя или при следующем серверном вызове. Это зависит от способа помещения данных в хранилище сеансовых данных.
Неактуальные сеансовых данные периодически очищаются сборщиком мусора. Если помещаемые данные содержат циклические ссылки, то автоматической очистки может не произойти.
Объём создаваемых сеансовых данных можно определить с помощью анализа технологического журнала. Для этого требуется включить сбор событий CALL, SCALL и CONN со следующими настройками:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
<config xmlns="http://v8.1c.ru/v8/tech-log"> <log history="24" location="c:\log\sntx"> <event> <eq property="name" value="CONN"/> </event> <event> <eq property="name" value="CALL"/> <eq property="IName" value="ISeanceContextStorage"/> <eq property="MName" value="seanceParametersPresave"/> </event> <event> <eq property="name" value="SCALL"/> <eq property="IName" value="ISeanceContextStorage"/> <eq property="MName" value="seanceParametersPresave"/> </event> <property name="all"/> </log> </config> |
При этом свойство InBytes события CALL будет показывать сеансовые данные в байтах.