Технологический журнал. Анализ логов


Коллеги, продолжаем серию статей, посвященных технологическому журналу.

Сегодня мы покажем практику анализа логов ТЖ.

Другие статьи из серии «Технологический журнал»:

«ТЖ: Настройка»

«ТЖ: События и фильтры»

«ТЖ: Описание и включение»

Анализ логов технологического журнала

Что Вы узнаете из этой статьи?

  • Более подробно познакомимся с логами в 1С: Предприятие 8
  • Подробно изучим формат лога Технологического журнала
  • Разберем на примере лог с записанными данными

Давайте посмотрим что произойдет, если мы создадим файл logcfg.xmlс указанной выше структурой и поместим его в каталог «C:\Program Files\1Cv82\conf»

Подождем 60 секунд и откроем каталог «C:\1C_Info\Logs», т.к. именно его мы указывали в 3 строке файла logcfg.

Если каталога 1C_Info на диске нет, то сервер 1С попробует его создать, но есть риск того что у пользователя под которым запущена служба 1С не будет прав. Поэтому рекомендуется создавать каталоги для логов вручную и проверять наличие прав у сервера 1С на запись в данный каталог.

В результате в каталоге мы видим 3 подкаталога.

Технологический журнал 1С. Анализ логов

Каждый процесс кластера создал каталог, в котором находятся логи только данного процесса, а т.к. у меня только 3 процесса, то и каталогов тоже 3.

Каталог создается по шаблону ИмяПроцесса_PIDПроцесса. PID нужен для того, чтобы отличать процессы с одинаковым именем.

Каждый час создается отдельный файл с логом.

Технологический журнал 1С. Анализ логов

Файл лога именуется по шаблону ГГММДДЧЧ.log.

Например, у меня первый лог за 6 апреля 2015 года 10 часов утра.

Если лог старше чем количество часов указанное в параметре history файла logcfg, то он автоматически удаляется платформой.

Давайте подробно разберем формат лога технологического журнала.

Событие записываются в лог только после того, как оно завершилось, т.к. необходимо фиксировать длительность события.

Строка лога имеет формат:

 мм:сс.тттт-д, <ИмяСобытия>, <Уровень>, <Свойства>

Где:

мм – номер минуты в текущем часе.

сс – номер секунды в текущей̆ минуте.

тттт – номер десятитысячной доли текущей̆ секунды, для 8.3 здесь отображается номер миллионной доли.

д – длительность события в десятитысячных долях секунды, для 8.3 в миллионных долях.

<ИмяСобытия> – наименование события.

<Уровень> – уровень события в стеке текущего потока.

<Свойства> — свойства события разделенные запятыми, значения свойств проставлены через знак «=».

Разберем на примере.

Есть лог со следующим содержимым:

Технологический журнал 1С. Анализ логов

00:16 — это минуты и секунды окончания события. 
    Дату и час события можно взять из названия файла лога. 
    Событие завершилось 6 апреля 2015 года в 11 часов 00 минут 16 секунд.
8640 – для 8.2 это десятитысячные доли секунды.
    А для 8.3 — миллионные доли секунды момента завершения события.
1 – это длительность события. 
    В 8.2 длительность указывается в десятитысячных долях секунды,
    в 8.3 в миллионных долях секунды.
    Если необходимо поставить фильтр на длительность, то можно 
    использовать имя свойства «Duration».
DBMSSQL – это имя события.
    В данном случае выполнение инструкций СУБД MS SQL Server.
3 – уровень события.
    Далее идут свойства события DBMSSQL,при этом у каждого события свой
    набор свойств.Полный список свойств для всех событий можно посмотреть
    в руководстве администратора. Здесь мы подробно рассмотрим свойства 
    только для текущего события.
Process – Описывает процесс для которого пишется данный лог. Это свойство
    есть у всех событий. В моем случае пишется лог процесса rphost.
P:processName – имя информационной базы 1С.
    Событие было сформировано в базе под названием Deadlock.
T:clientID — идентификатор соединения с клиентом по TCP.
T:applicationName – идентификатор клиентской программы.
    Т.е. кто именно вызвал событие, в моем случае это фоновое задание.
T:connectID – номер соединения с информационной базой.
SessionID – номер сеанса, назначенный текущему потоку. 
    Если текущему потоку не назначен сеанс, то свойство не добавляется.
Usr – имя пользователя информационной базой под которым выполняется 
    данный поток. Если пользователь не определен, подставляется значение 
    DefUser.
Trans – показывает открыта транзакция на момент начала события или нет.
    1 – открыта, 0 – нет.
dbpid – номер соединения сервера 1С с сервером баз данных.
SQL – текст инструкции SQL. 
    Чаще всего здесь содержится текст запроса SQL с параметрами.
Rows – количество строк, которые вернул запрос.
RowsAffected – количество строк, которые изменил запрос в базе данных.
Context – какая строка кода на языке 1С породила данное событие. 
    Наверное, самое интересное для нас событие.

Бурмистров Андрей

В следующих статьях рассмотрим «События», а также их фильтрацию в ТЖ.

А пока закрепите полученный материал на своей тестовой информационной базе :)

PDF-версия статьи для участников группы ВКонтакте

Мы ведем группу ВКонтакте – http://vk.com/kursypo1c.

Если Вы еще не вступили в группу – сделайте это сейчас и в блоке ниже (на этой странице) появятся ссылка на скачивание материалов.

Статья по программированию - в PDF-формате

Статья в PDF-формате

Вы можете скачать эту статью в формате PDF по следующей ссылке:

Ссылка доступна для зарегистрированных пользователей)


Ссылка доступна для зарегистрированных пользователей)
Ссылка доступна для зарегистрированных пользователей)
Ссылка доступна для зарегистрированных пользователей)

Если Вы уже участник группы – нужно просто повторно авторизоваться в ВКонтакте, чтобы скрипт Вас узнал. В случае проблем решение стандартное: очистить кеш браузера или подписаться через другой браузер.

Если вы хотите узнать больше об оптимизации 1С и быть экспертом в этой области – пройдите наш новый курс «Оптимизация производительности 1С:Предприятие».

Учебный курс «Оптимизация и ускорение 1C:Предприятия 8»

Комментарии / обсуждение (14):

  1. cojko

    Добрый день, я добавил в папку конф платформы файл логов такой (создан в контсрукторе) , но он не создал папку с наименование rphost, а создал такого рода папки (1cv8_5568,mmc_6096 например) :

    • Андрей Бурмистров

      Здравствуйте.
      Похоже что вы разместили файл на клиенте, а не на сервере.

  2. t.gimadeev

    Андрей здраствуйте, я проходил Ваш курс по оптимизации. У нас сейчас серьезные проблемы с утечкой памяти, может вы подскажете, а то видимо я какой-то момент пропустил. И вроде пересмотрел курс еще раз, но что-то с утечками возникли сложности. Пробовали ловить долгие запросы сервисами Гилева, только одни отчеты попадаются. Конфигурация УТ 11.
    Лог ТЖ установил на утечку памяти, дальше посмотрел проблемный хост и собрал иформацию из поля Memory. Посмотрел где откусило больше 100 Мб утечек. Вот один из результатов:
    Хотелось бы понять, а что делать дальше?… Просто эти отчеты люди запускают каждый день но утечки вызывают они как-то не постоянно. Да и я не совсем понимаю, что здесь не так? Очень буду благодарен за наводящий ответ.

    40:34.211100-223440092,CALL,1,process=rphost,t:clientID=105,SessionID=8761(7777),p:processName=ut11_moscow,Func=Background job,Module=РаботаВБезопасномРежиме,Method=ВыполнитьМетодКонфигурации,Memory=1917305459,MemoryPeak=3091283892,InBytes=235172,OutBytes=3052287
    40:34.226000-0,LEAKS,1,process=rphost,t:clientID=105,t:applicationName=BackgroundJob,t:computerName=HV4,t:connectID=14373,Descr=’
    ValueList:
    ОбщийМодуль.РаботаВБезопасномРежиме.Модуль : 482 : Выполнить ИмяЭкспортнойПроцедуры + “(” + ПараметрыСтрока + “)”;
    : 1 : ВариантыОтчетов.СформироватьОтчет(Параметры[0],Параметры[1])
    ОбщийМодуль.ВариантыОтчетов.Модуль : 1251 : ОтчетОбъект.КомпоновщикНастроек.ЗагрузитьФиксированныеНастройки(ПараметрыФормированияОтчета.ФиксированныеНастройки);

    Array:
    ОбщийМодуль.РаботаВБезопасномРежиме.Модуль : 482 : Выполнить ИмяЭкспортнойПроцедуры + “(” + ПараметрыСтрока + “)”;
    : 1 : ВариантыОтчетов.СформироватьОтчет(Параметры[0],Параметры[1])
    ОбщийМодуль.ВариантыОтчетов.Модуль : 1237 : ОтчетОбъект = Отчеты[ОтчетСсылка.Имя].Создать();

    Array:
    ОбщийМодуль.РаботаВБезопасномРежиме.Модуль : 482 : Выполнить ИмяЭкспортнойПроцедуры + “(” + ПараметрыСтрока + “)”;
    : 1 : ВариантыОтчетов.СформироватьОтчет(Параметры[0],Параметры[1])
    ОбщийМодуль.ВариантыОтчетов.Модуль : 1237 : ОтчетОбъект = Отчеты[ОтчетСсылка.Имя].Создать();

    Array:
    ОбщийМодуль.РаботаВБезопасномРежиме.Модуль : 482 : Выполнить ИмяЭкспортнойПроцедуры + “(” + ПараметрыСтрока + “)”;
    : 1 : ВариантыОтчетов.СформироватьОтчет(Параметры[0],Параметры[1])
    ОбщийМодуль.ВариантыОтчетов.Модуль : 1237 : ОтчетОбъект = Отчеты[ОтчетСсылка.Имя].Создать();

    Array:
    ОбщийМодуль.РаботаВБезопасномРежиме.Модуль : 482 : Выполнить ИмяЭкспортнойПроцедуры + “(” + ПараметрыСтрока + “)”;
    : 1 : ВариантыОтчетов.СформироватьОтчет(Параметры[0],Параметры[1])
    ОбщийМодуль.ВариантыОтчетов.Модуль : 1237 : ОтчетОбъект = Отчеты[ОтчетСсылка.Имя].Создать();

    Array:
    ОбщийМодуль.РаботаВБезопасномРежиме.Модуль : 482 : Выполнить ИмяЭкспортнойПроцедуры + “(” + ПараметрыСтрока + “)”;
    : 1 : ВариантыОтчетов.СформироватьОтчет(Параметры[0],Параметры[1])
    ОбщийМодуль.ВариантыОтчетов.Модуль : 1237 : ОтчетОбъект = Отчеты[ОтчетСсылка.Имя].Создать();

    Array:
    ОбщийМодуль.РаботаВБезопасномРежиме.Модуль : 482 : Выполнить ИмяЭкспортнойПроцедуры + “(” + ПараметрыСтрока + “)”;
    : 1 : ВариантыОтчетов.СформироватьОтчет(Параметры[0],Параметры[1])
    ОбщийМодуль.ВариантыОтчетов.Модуль : 1237 : ОтчетОбъект = Отчеты[ОтчетСсылка.Имя].Создать();

    Array:
    ОбщийМодуль.РаботаВБезопасномРежиме.Модуль : 482 : Выполнить ИмяЭкспортнойПроцедуры + “(” + ПараметрыСтрока + “)”;
    : 1 : ВариантыОтчетов.СформироватьОтчет(Параметры[0],Параметры[1])
    ОбщийМодуль.ВариантыОтчетов.Модуль : 1237 : ОтчетОбъект = Отчеты[ОтчетСсылка.Имя].Создать();

    Array:
    ОбщийМодуль.РаботаВБезопасномРежиме.Модуль : 482 : Выполнить ИмяЭкспортнойПроцедуры + “(” + ПараметрыСтрока + “)”;
    : 1 : ВариантыОтчетов.СформироватьОтчет(Параметры[0],Параметры[1])
    ОбщийМодуль.ВариантыОтчетов.Модуль : 1237 : ОтчетОбъект = Отчеты[ОтчетСсылка.Имя].Создать();

    Array:
    ОбщийМодуль.РаботаВБезопасномРежиме.Модуль : 482 : Выполнить ИмяЭкспортнойПроцедуры + “(” + ПараметрыСтрока + “)”;
    : 1 : ВариантыОтчетов.СформироватьОтчет(Параметры[0],Параметры[1])
    ОбщийМодуль.ВариантыОтчетов.Модуль : 1237 : ОтчетОбъект = Отчеты[ОтчетСсылка.Имя].Создать();

    Array:
    ОбщийМодуль.РаботаВБезопасномРежиме.Модуль : 482 : Выполнить ИмяЭкспортнойПроцедуры + “(” + ПараметрыСтрока + “)”;
    : 1 : ВариантыОтчетов.СформироватьОтчет(Параметры[0],Параметры[1])
    ОбщийМодуль.ВариантыОтчетов.Модуль : 1237 : ОтчетОбъект = Отчеты[ОтчетСсылка.Имя].Создать();

    Array:
    ОбщийМодуль.РаботаВБезопасномРежиме.Модуль : 482 : Выполнить ИмяЭкспортнойПроцедуры + “(” + ПараметрыСтрока + “)”;
    : 1 : ВариантыОтчетов.СформироватьОтчет(Параметры[0],Параметры[1])
    ОбщийМодуль.ВариантыОтчетов.Модуль : 1237 : ОтчетОбъект = Отчеты[ОтчетСсылка.Имя].Создать();

    Array:
    ОбщийМодуль.РаботаВБезопасномРежиме.Модуль : 482 : Выполнить ИмяЭкспортнойПроцедуры + “(” + ПараметрыСтрока + “)”;
    : 1 : ВариантыОтчетов.СформироватьОтчет(Параметры[0],Параметры[1])
    ОбщийМодуль.ВариантыОтчетов.Модуль : 1237 : ОтчетОбъект = Отчеты[ОтчетСсылка.Имя].Создать();

    Array:
    ОбщийМодуль.РаботаВБезопасномРежиме.Модуль : 482 : Выполнить ИмяЭкспортнойПроцедуры + “(” + ПараметрыСтрока + “)”;
    : 1 : ВариантыОтчетов.СформироватьОтчет(Параметры[0],Параметры[1])
    ОбщийМодуль.ВариантыОтчетов.Модуль : 1237 : ОтчетОбъект = Отчеты[ОтчетСсылка.Имя].Создать();

    ValueList:
    ОбщийМодуль.РаботаВБезопасномРежиме.Модуль : 482 : Выполнить ИмяЭкспортнойПроцедуры + “(” + ПараметрыСтрока + “)”;
    : 1 : ВариантыОтчетов.СформироватьОтчет(Параметры[0],Параметры[1])
    ОбщийМодуль.ВариантыОтчетов.Модуль : 1251 : ОтчетОбъект.КомпоновщикНастроек.ЗагрузитьФиксированныеНастройки(ПараметрыФормированияОтчета.ФиксированныеНастройки);

    ValueList:
    ОбщийМодуль.РаботаВБезопасномРежиме.Модуль : 482 : Выполнить ИмяЭкспортнойПроцедуры + “(” + ПараметрыСтрока + “)”;
    : 1 : ВариантыОтчетов.СформироватьОтчет(Параметры[0],Параметры[1])
    ОбщийМодуль.ВариантыОтчетов.Модуль : 1251 : ОтчетОбъект.КомпоновщикНастроек.ЗагрузитьФиксированныеНастройки(ПараметрыФормированияОтчета.ФиксированныеНастройки);

    ValueList:
    ОбщийМодуль.РаботаВБезопасномРежиме.Модуль : 482 : Выполнить ИмяЭкспортнойПроцедуры + “(” + ПараметрыСтрока + “)”;
    : 1 : ВариантыОтчетов.СформироватьОтчет(Параметры[0],Параметры[1])
    ОбщийМодуль.ВариантыОтчетов.Модуль : 1251 : ОтчетОбъект.КомпоновщикНастроек.ЗагрузитьФиксированныеНастройки(ПараметрыФормированияОтчета.ФиксированныеНастройки);

    ValueList:
    ОбщийМодуль.РаботаВБезопасномРежиме.Модуль : 482 : Выполнить ИмяЭкспортнойПроцедуры + “(” + ПараметрыСтрока + “)”;
    : 1 : ВариантыОтчетов.СформироватьОтчет(Параметры[0],Параметры[1])
    ОбщийМодуль.ВариантыОтчетов.Модуль : 1237 : ОтчетОбъект = Отчеты[ОтчетСсылка.Имя].Создать();

    ValueList:
    ОбщийМодуль.РаботаВБезопасномРежиме.Модуль : 482 : Выполнить ИмяЭкспортнойПроцедуры + “(” + ПараметрыСтрока + “)”;
    : 1 : ВариантыОтчетов.СформироватьОтчет(Параметры[0],Параметры[1])
    ОбщийМодуль.ВариантыОтчетов.Модуль : 1251 : ОтчетОбъект.КомпоновщикНастроек.ЗагрузитьФиксированныеНастройки(ПараметрыФормированияОтчета.ФиксированныеНастройки);

    ValueList:
    ОбщийМодуль.РаботаВБезопасномРежиме.Модуль : 482 : Выполнить ИмяЭкспортнойПроцедуры + “(” + ПараметрыСтрока + “)”;
    : 1 : ВариантыОтчетов.СформироватьОтчет(Параметры[0],Параметры[1])
    ОбщийМодуль.ВариантыОтчетов.Модуль : 1251 : ОтчетОбъект.КомпоновщикНастроек.ЗагрузитьФиксированныеНастройки(ПараметрыФормированияОтчета.ФиксированныеНастройки);

    ValueList:
    ОбщийМодуль.РаботаВБезопасномРежиме.Модуль : 482 : Выполнить ИмяЭкспортнойПроцедуры + “(” + ПараметрыСтрока + “)”;
    : 1 : ВариантыОтчетов.СформироватьОтчет(Параметры[0],Параметры[1])
    ОбщийМодуль.ВариантыОтчетов.Модуль : 1251 : ОтчетОбъект.КомпоновщикНастроек.ЗагрузитьФиксированныеНастройки(ПараметрыФормированияОтчета.ФиксированныеНастройки);

    ValueList:
    ОбщийМодуль.РаботаВБезопасномРежиме.Модуль : 482 : Выполнить ИмяЭкспортнойПроцедуры + “(” + ПараметрыСтрока + “)”;
    : 1 : ВариантыОтчетов.СформироватьОтчет(Параметры[0],Параметры[1])
    ОбщийМодуль.ВариантыОтчетов.Модуль : 1251 : ОтчетОбъект.КомпоновщикНастроек.ЗагрузитьФиксированныеНастройки(ПараметрыФормированияОтчета.ФиксированныеНастройки);

    ValueListItem:
    ОбщийМодуль.РаботаВБезопасномРежиме.Модуль : 482 : Выполнить ИмяЭкспортнойПроцедуры + “(” + ПараметрыСтрока + “)”;
    : 1 : ВариантыОтчетов.СформироватьОтчет(Параметры[0],Параметры[1])
    ОбщийМодуль.ВариантыОтчетов.Модуль : 1251 : ОтчетОбъект.КомпоновщикНастроек.ЗагрузитьФиксированныеНастройки(ПараметрыФормированияОтчета.ФиксированныеНастройки);

    ValueListItem:
    ОбщийМодуль.РаботаВБезопасномРежиме.Модуль : 482 : Выполнить ИмяЭкспортнойПроцедуры + “(” + ПараметрыСтрока + “)”;
    : 1 : ВариантыОтчетов.СформироватьОтчет(Параметры[0],Параметры[1])
    ОбщийМодуль.ВариантыОтчетов.Модуль : 1251 : ОтчетОбъект.КомпоновщикНастроек.ЗагрузитьФиксированныеНастройки(ПараметрыФормированияОтчета.ФиксированныеНастройки);

    Structure:
    ОбщийМодуль.РаботаВБезопасномРежиме.Модуль : 482 : Выполнить ИмяЭкспортнойПроцедуры + “(” + ПараметрыСтрока + “)”;
    : 1 : ВариантыОтчетов.СформироватьОтчет(Параметры[0],Параметры[1])
    ОбщийМодуль.ВариантыОтчетов.Модуль : 1258 : ОтчетОбъект.СкомпоноватьРезультат(ТабличныйДокумент, Расшифровка);
    Отчет.ВедомостьПоТоварамОрганизаций.МодульОбъекта : 15 : МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, НастройкиОтчета, ДанныеРасшифровки);

    Structure:
    ОбщийМодуль.РаботаВБезопасномРежиме.Модуль : 482 : Выполнить ИмяЭкспортнойПроцедуры + “(” + ПараметрыСтрока + “)”;
    : 1 : ВариантыОтчетов.СформироватьОтчет(Параметры[0],Параметры[1])
    ОбщийМодуль.ВариантыОтчетов.Модуль : 1262 : РезультатФормирования = Новый Структура;

    Structure:
    ОбщийМодуль.РаботаВБезопасномРежиме.Модуль : 482 : Выполнить ИмяЭкспортнойПроцедуры + “(” + ПараметрыСтрока + “)”;
    : 1 : ВариантыОтчетов.СформироватьОтчет(Параметры[0],Параметры[1])
    ОбщийМодуль.ВариантыОтчетов.Модуль : 1258 : ОтчетОбъект.СкомпоноватьРезультат(ТабличныйДокумент, Расшифровка);
    Отчет.ВедомостьПоТоварамОрганизаций.МодульОбъекта : 15 : МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, НастройкиОтчета, ДанныеРасшифровки);

    Structure:
    ОбщийМодуль.РаботаВБезопасномРежиме.Модуль : 482 : Выполнить ИмяЭкспортнойПроцедуры + “(” + ПараметрыСтрока + “)”;
    : 1 : ВариантыОтчетов.СформироватьОтчет(Параметры[0],Параметры[1])
    ОбщийМодуль.ВариантыОтчетов.Модуль : 1258 : ОтчетОбъект.СкомпоноватьРезультат(ТабличныйДокумент, Расшифровка);
    Отчет.ВедомостьПоТоварамОрганизаций.МодульОбъекта : 15 : МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, НастройкиОтчета, ДанныеРасшифровки);

    Structure:
    ОбщийМодуль.РаботаВБезопасномРежиме.Модуль : 482 : Выполнить ИмяЭкспортнойПроцедуры + “(” + ПараметрыСтрока + “)”;
    : 1 : ВариантыОтчетов.СформироватьОтчет(Параметры[0],Параметры[1])
    ОбщийМодуль.ВариантыОтчетов.Модуль : 1258 : ОтчетОбъект.СкомпоноватьРезультат(ТабличныйДокумент, Расшифровка);
    Отчет.ВедомостьПоТоварамОрганизаций.МодульОбъекта : 15 : МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, НастройкиОтчета, ДанныеРасшифровки);

    Structure:
    ОбщийМодуль.РаботаВБезопасномРежиме.Модуль : 482 : Выполнить ИмяЭкспортнойПроцедуры + “(” + ПараметрыСтрока + “)”;
    : 1 : ВариантыОтчетов.СформироватьОтчет(Параметры[0],Параметры[1])
    ОбщийМодуль.ВариантыОтчетов.Модуль : 1258 : ОтчетОбъект.СкомпоноватьРезультат(ТабличныйДокумент, Расшифровка);
    Отчет.ВедомостьПоТоварамОрганизаций.МодульОбъекта : 15 : МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, НастройкиОтчета, ДанныеРасшифровки);

    Structure:
    ОбщийМодуль.РаботаВБезопасномРежиме.Модуль : 482 : Выполнить ИмяЭкспортнойПроцедуры + “(” + ПараметрыСтрока + “)”;
    : 1 : ВариантыОтчетов.СформироватьОтчет(Параметры[0],Параметры[1])
    ОбщийМодуль.ВариантыОтчетов.Модуль : 1251 : ОтчетОбъект.КомпоновщикНастроек.ЗагрузитьФиксированныеНастройки(ПараметрыФормированияОтчета.ФиксированныеНастройки);

    Structure:
    ОбщийМодуль.РаботаВБезопасномРежиме.Модуль : 482 : Выполнить ИмяЭкспортнойПроцедуры + “(” + ПараметрыСтрока + “)”;
    : 1 : ВариантыОтчетов.СформироватьОтчет(Параметры[0],Параметры[1])
    ОбщийМодуль.ВариантыОтчетов.Модуль : 1258 : ОтчетОбъект.СкомпоноватьРезультат(ТабличныйДокумент, Расшифровка);
    Отчет.ВедомостьПоТоварамОрганизаций.МодульОбъекта : 15 : МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, НастройкиОтчета, ДанныеРасшифровки);

    Structure:
    ОбщийМодуль.РаботаВБезопасномРежиме.Модуль : 482 : Выполнить ИмяЭкспортнойПроцедуры + “(” + ПараметрыСтрока + “)”;
    : 1 : ВариантыОтчетов.СформироватьОтчет(Параметры[0],Параметры[1])
    ОбщийМодуль.ВариантыОтчетов.Модуль : 1258 : ОтчетОбъект.СкомпоноватьРезультат(ТабличныйДокумент, Расшифровка);
    Отчет.ВедомостьПоТоварамОрганизаций.МодульОбъекта : 15 : МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, НастройкиОтчета, ДанныеРасшифровки);

    Structure:
    ОбщийМодуль.РаботаВБезопасномРежиме.Модуль : 482 : Выполнить ИмяЭкспортнойПроцедуры + “(” + ПараметрыСтрока + “)”;
    : 1 : ВариантыОтчетов.СформироватьОтчет(Параметры[0],Параметры[1])
    ОбщийМодуль.ВариантыОтчетов.Модуль : 1237 : ОтчетОбъект = Отчеты[ОтчетСсылка.Имя].Создать();

    ValueListItem:
    ОбщийМодуль.РаботаВБезопасномРежиме.Модуль : 482 : Выполнить ИмяЭкспортнойПроцедуры + “(” + ПараметрыСтрока + “)”;
    : 1 : ВариантыОтчетов.СформироватьОтчет(Параметры[0],Параметры[1])
    ОбщийМодуль.ВариантыОтчетов.Модуль : 1258 : ОтчетОбъект.СкомпоноватьРезультат(ТабличныйДокумент, Расшифровка);
    Отчет.ВедомостьПоТоварамОрганизаций.МодульОбъекта : 15 : МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, НастройкиОтчета, ДанныеРасшифровки);

    ValueListItem:
    ОбщийМодуль.РаботаВБезопасномРежиме.Модуль : 482 : Выполнить ИмяЭкспортнойПроцедуры + “(” + ПараметрыСтрока + “)”;
    : 1 : ВариантыОтчетов.СформироватьОтчет(Параметры[0],Параметры[1])
    ОбщийМодуль.ВариантыОтчетов.Модуль : 1258 : ОтчетОбъект.СкомпоноватьРезультат(ТабличныйДокумент, Расшифровка);
    Отчет.ВедомостьПоТоварамОрганизаций.МодульОбъекта : 15 : МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, НастройкиОтчета, ДанныеРасшифровки);

    ValueList:
    ОбщийМодуль.РаботаВБезопасномРежиме.Модуль : 482 : Выполнить ИмяЭкспортнойПроцедуры + “(” + ПараметрыСтрока + “)”;
    : 1 : ВариантыОтчетов.СформироватьОтчет(Параметры[0],Параметры[1])
    ОбщийМодуль.ВариантыОтчетов.Модуль : 1258 : ОтчетОбъект.СкомпоноватьРезультат(ТабличныйДокумент, Расшифровка);
    Отчет.ВедомостьПоТоварамОрганизаций.МодульОбъекта : 15 : МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, НастройкиОтчета, ДанныеРасшифровки);

    ValueList:
    ОбщийМодуль.РаботаВБезопасномРежиме.Модуль : 482 : Выполнить ИмяЭкспортнойПроцедуры + “(” + ПараметрыСтрока + “)”;
    : 1 : ВариантыОтчетов.СформироватьОтчет(Параметры[0],Параметры[1])
    ОбщийМодуль.ВариантыОтчетов.Модуль : 1258 : ОтчетОбъект.СкомпоноватьРезультат(ТабличныйДокумент, Расшифровка);
    Отчет.ВедомостьПоТоварамОрганизаций.МодульОбъекта : 15 : МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, НастройкиОтчета, ДанныеРасшифровки);

    ValueList:
    ОбщийМодуль.РаботаВБезопасномРежиме.Модуль : 482 : Выполнить ИмяЭкспортнойПроцедуры + “(” + ПараметрыСтрока + “)”;
    : 1 : ВариантыОтчетов.СформироватьОтчет(Параметры[0],Параметры[1])
    ОбщийМодуль.ВариантыОтчетов.Модуль : 1258 : ОтчетОбъект.СкомпоноватьРезультат(ТабличныйДокумент, Расшифровка);
    Отчет.ВедомостьПоТоварамОрганизаций.МодульОбъекта : 15 : МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, НастройкиОтчета, ДанныеРасшифровки);

    ValueListItem:
    ОбщийМодуль.РаботаВБезопасномРежиме.Модуль : 482 : Выполнить ИмяЭкспортнойПроцедуры + “(” + ПараметрыСтрока + “)”;
    : 1 : ВариантыОтчетов.СформироватьОтчет(Параметры[0],Параметры[1])
    ОбщийМодуль.ВариантыОтчетов.Модуль : 1237 : ОтчетОбъект = Отчеты[ОтчетСсылка.Имя].Создать();

    ValueListItem:
    ОбщийМодуль.РаботаВБезопасномРежиме.Модуль : 482 : Выполнить ИмяЭкспортнойПроцедуры + “(” + ПараметрыСтрока + “)”;
    : 1 : ВариантыОтчетов.СформироватьОтчет(Параметры[0],Параметры[1])
    ОбщийМодуль.ВариантыОтчетов.Модуль : 1251 : ОтчетОбъект.КомпоновщикНастроек.ЗагрузитьФиксированныеНастройки(ПараметрыФормированияОтчета.ФиксированныеНастройки);

    ValueListItem:
    ОбщийМодуль.РаботаВБезопасномРежиме.Модуль : 482 : Выполнить ИмяЭкспортнойПроцедуры + “(” + ПараметрыСтрока + “)”;
    : 1 : ВариантыОтчетов.СформироватьОтчет(Параметры[0],Параметры[1])
    ОбщийМодуль.ВариантыОтчетов.Модуль : 1251 : ОтчетОбъект.КомпоновщикНастроек.ЗагрузитьФиксированныеНастройки(ПараметрыФормированияОтчета.ФиксированныеНастройки);

    ValueListItem:
    ОбщийМодуль.РаботаВБезопасномРежиме.Модуль : 482 : Выполнить ИмяЭкспортнойПроцедуры + “(” + ПараметрыСтрока + “)”;
    : 1 : ВариантыОтчетов.СформироватьОтчет(Параметры[0],Параметры[1])
    ОбщийМодуль.ВариантыОтчетов.Модуль : 1251 : ОтчетОбъект.КомпоновщикНастроек.ЗагрузитьФиксированныеНастройки(ПараметрыФормированияОтчета.ФиксированныеНастройки);

    ValueListItem:
    ОбщийМодуль.РаботаВБезопасномРежиме.Модуль : 482 : Выполнить ИмяЭкспортнойПроцедуры + “(” + ПараметрыСтрока + “)”;
    : 1 : ВариантыОтчетов.СформироватьОтчет(Параметры[0],Параметры[1])
    ОбщийМодуль.ВариантыОтчетов.Модуль : 1251 : ОтчетОбъект.КомпоновщикНастроек.ЗагрузитьФиксированныеНастройки(ПараметрыФормированияОтчета.ФиксированныеНастройки);

    ValueListItem:
    ОбщийМодуль.РаботаВБезопасномРежиме.Модуль : 482 : Выполнить ИмяЭкспортнойПроцедуры + “(” + ПараметрыСтрока + “)”;
    : 1 : ВариантыОтчетов.СформироватьОтчет(Параметры[0],Параметры[1])
    ОбщийМодуль.ВариантыОтчетов.Модуль : 1251 : ОтчетОбъект.КомпоновщикНастроек.ЗагрузитьФиксированныеНастройки(ПараметрыФормированияОтчета.ФиксированныеНастройки);

    ValueListItem:
    ОбщийМодуль.РаботаВБезопасномРежиме.Модуль : 482 : Выполнить ИмяЭкспортнойПроцедуры + “(” + ПараметрыСтрока + “)”;
    : 1 : ВариантыОтчетов.СформироватьОтчет(Параметры[0],Параметры[1])
    ОбщийМодуль.ВариантыОтчетов.Модуль : 1251 : ОтчетОбъект.КомпоновщикНастроек.ЗагрузитьФиксированныеНастройки(ПараметрыФормированияОтчета.ФиксированныеНастройки);

    ValueListItem:
    ОбщийМодуль.РаботаВБезопасномРежиме.Модуль : 482 : Выполнить ИмяЭкспортнойПроцедуры + “(” + ПараметрыСтрока + “)”;
    : 1 : ВариантыОтчетов.СформироватьОтчет(Параметры[0],Параметры[1])
    ОбщийМодуль.ВариантыОтчетов.Модуль : 1251 : ОтчетОбъект.КомпоновщикНастроек.ЗагрузитьФиксированныеНастройки(ПараметрыФормированияОтчета.ФиксированныеНастройки);

    ValueListItem:
    ОбщийМодуль.РаботаВБезопасномРежиме.Модуль : 482 : Выполнить ИмяЭкспортнойПроцедуры + “(” + ПараметрыСтрока + “)”;
    : 1 : ВариантыОтчетов.СформироватьОтчет(Параметры[0],Параметры[1])
    ОбщийМодуль.ВариантыОтчетов.Модуль : 1251 : ОтчетОбъект.КомпоновщикНастроек.ЗагрузитьФиксированныеНастройки(ПараметрыФормированияОтчета.ФиксированныеНастройки);

    ValueListItem:
    ОбщийМодуль.РаботаВБезопасномРежиме.Модуль : 482 : Выполнить ИмяЭкспортнойПроцедуры + “(” + ПараметрыСтрока + “)”;
    : 1 : ВариантыОтчетов.СформироватьОтчет(Параметры[0],Параметры[1])
    ОбщийМодуль.ВариантыОтчетов.Модуль : 1251 : ОтчетОбъект.КомпоновщикНастроек.ЗагрузитьФиксированныеНастройки(ПараметрыФормированияОтчета.ФиксированныеНастройки);

    ValueListItem:
    ОбщийМодуль.РаботаВБезопасномРежиме.Модуль : 482 : Выполнить ИмяЭкспортнойПроцедуры + “(” + ПараметрыСтрока + “)”;
    : 1 : ВариантыОтчетов.СформироватьОтчет(Параметры[0],Параметры[1])
    ОбщийМодуль.ВариантыОтчетов.Модуль : 1251 : ОтчетОбъект.КомпоновщикНастроек.ЗагрузитьФиксированныеНастройки(ПараметрыФормированияОтчета.ФиксированныеНастройки);

    ValueListItem:
    ОбщийМодуль.РаботаВБезопасномРежиме.Модуль : 482 : Выполнить ИмяЭкспортнойПроцедуры + “(” + ПараметрыСтрока + “)”;
    : 1 : ВариантыОтчетов.СформироватьОтчет(Параметры[0],Параметры[1])
    ОбщийМодуль.ВариантыОтчетов.Модуль : 1251 : ОтчетОбъект.КомпоновщикНастроек.ЗагрузитьФиксированныеНастройки(ПараметрыФормированияОтчета.ФиксированныеНастройки);

    ValueListItem:
    ОбщийМодуль.РаботаВБезопасномРежиме.Модуль : 482 : Выполнить ИмяЭкспортнойПроцедуры + “(” + ПараметрыСтрока + “)”;
    : 1 : ВариантыОтчетов.СформироватьОтчет(Параметры[0],Параметры[1])
    ОбщийМодуль.ВариантыОтчетов.Модуль : 1251 : ОтчетОбъект.КомпоновщикНастроек.ЗагрузитьФиксированныеНастройки(ПараметрыФормированияОтчета.ФиксированныеНастройки);

    ValueListItem:
    ОбщийМодуль.РаботаВБезопасномРежиме.Модуль : 482 : Выполнить ИмяЭкспортнойПроцедуры + “(” + ПараметрыСтрока + “)”;
    : 1 : ВариантыОтчетов.СформироватьОтчет(Параметры[0],Параметры[1])
    ОбщийМодуль.ВариантыОтчетов.Модуль : 1237 : ОтчетОбъект = Отчеты[ОтчетСсылка.Имя].Создать();

    KeyAndValue:
    ОбщийМодуль.РаботаВБезопасномРежиме.Модуль : 482 : Выполнить ИмяЭкспортнойПроцедуры + “(” + ПараметрыСтрока + “)”;
    : 1 : ВариантыОтчетов.СформироватьОтчет(Параметры[0],Параметры[1])
    ОбщийМодуль.ВариантыОтчетов.Модуль : 1263 : РезультатФормирования.Вставить(“ОтчетТабличныйДокумент”, ТабличныйДокумент);

    KeyAndValue:
    ОбщийМодуль.РаботаВБезопасномРежиме.Модуль : 482 : Выполнить ИмяЭкспортнойПроцедуры + “(” + ПараметрыСтрока + “)”;
    : 1 : ВариантыОтчетов.СформироватьОтчет(Параметры[0],Параметры[1])
    ОбщийМодуль.ВариантыОтчетов.Модуль : 1264 : РезультатФормирования.Вставить(“ОтчетРасшифровка”, Расшифровка);

    KeyAndValue:
    ОбщийМодуль.РаботаВБезопасномРежиме.Модуль : 482 : Выполнить ИмяЭкспортнойПроцедуры + “(” + ПараметрыСтрока + “)”;
    : 1 : ВариантыОтчетов.СформироватьОтчет(Параметры[0],Параметры[1])
    ОбщийМодуль.ВариантыОтчетов.Модуль : 1265 : РезультатФормирования.Вставить(“ВариантМодифицирован”, Ложь);

    KeyAndValue:
    ОбщийМодуль.РаботаВБезопасномРежиме.Модуль : 482 : Выполнить ИмяЭкспортнойПроцедуры + “(” + ПараметрыСтрока + “)”;
    : 1 : ВариантыОтчетов.СформироватьОтчет(Параметры[0],Параметры[1])
    ОбщийМодуль.ВариантыОтчетов.Модуль : 1266 : РезультатФормирования.Вставить(“ПользовательскиеНастройкиМодифицированы”, Ложь);

    • Андрей Бурмистров

      Вы пробовали воспроизвести утечки при работе с этими отчетами на отдельном сервере? Если они воспроизводятся, то это отлично. Тогда можно отладчиком точно выявить тот момент когда утечка происходит, иначе придется долго ковыряться в логах и не факт что результативно, вполне возможно что утечка происходит где-то по вине платформы, тогда придется привлекать тех. поддержку 1С к решению проблемы.

      • t.gimadeev

        Вы не поверите но вот тех.поддержка не спешит руки особо морать я запостил вопрос им конечно же, вот он: https://partners.v8.1c.ru/forum/message/1416848?onlyMyThemesInput=true#m_1416848

        Там в конце собственно я написал, что мы пробовали отчет ловить на разных серверах и видим как рпхост не освобождается полностью даже если закрыть 1С. Например сформировав приличный отчет валовой прибыли в несколько раз мы рпхост заставили перевалится за 1500 Мб и платформа создала еще один рпхост. После закрытия 1С второй рпхост освободился но вот первый остался висеть в памяти. Что получается, что фонновое формирование отчетов работает как-то не коррекнто… Я уже не знаю, что и думать, может есть смысл снять фонновое формирование?

        • Андрей Бурмистров

          Обычно rphost сначала забирает память, но примерно в середине рабочего дня память должна перестать расти и выравнивается, это нормальное поведение.

          У вас на тестах, если отчет сформировать 10 раз, память будет каждый раз увеличиваться?

          Если да, тогда как я уже описал, попробуйте через отладчик поймать то место где это происходит.

          Так же попробуйте сформировать отчет вручную, не фоновым заданием, будут ли утечки в этом случае, если нет, значит опять же нужно с помощью отладчика найти в момент утечки.

          • t.gimadeev

            Анализирую тоько один отчет на отдельном сервере. Ведомость по товарам организаций за квартал с большой детализацией. Вижу при каждом запуске прижок рпхоста, пока не удалось его больше 1.6 Гб разогнать. Но самое интересное дальше.

            Если верить ТЖ и свойству Memory то у меня ничего ен сходится…Что я имею ввиду?

            Проанализировал ТЖ, файл анализа с помощью не хитрых действий сделал обработку анализа лог-файла и результат преобразовать утечку в Мб.

            утечки идут после каждого запуска по 690 Мб.Но у меня не сходится то, что общая память и после того как выйдет отчет рпхост вернулся к 900 Мб, местами был 1500 Мб.

            Что же получается? что утечки есть и одновременно их нет? Тоесть платформу умеет их побороть? Тогда ТЖ получается у нас неинформативный, поскольку это далеко не утечка? Я запутался…

            • Андрей Бурмистров

              ТЖ не умеет отличать утечки от не утечек, он может только сказать что память была выделена и не была освобождена после вызова. В начале работы память постоянно выделяется и не освобождается это нормально, заполняются всякие буферы и кэши, до середины рабочего дня память rphost может расти, это норма. Плохо если у вас память растет постоянно в течении всего дня, вот тогда можно говорить об утечках, иначе это стандартная работа. Если у вас рабочий процесс занимает максимум 1,5 Гб то это вообще почти ничего, даже не вижу тут никаких проблем. Включите в системном мониторе счетчики слежения за памятью рабочих процессов и посмотрите как будет изменятся график в течении дня, если примерно после обеда память уже значительно не растет, значит у вас все нормально и утечек нет.

              • t.gimadeev

                Я анализировал на отдельном сервере. Поэтому рпхост мне не особо удалось разогнать поскольку в базе я был один и моделировал ситуацию с отчетом, чтобы разобраться в каком месте не освобождается память.

                Насчет счетчиков, а как потом понять, что счетчик rphost#1 …. rphost#n к какому Id хоста отнести, чтобы проанализировать ТЖ конкретного хоста.

                И еще, память растет не постоянно, тоесть как Вы и говорите идет обычная работа. Но бывают моменты, что под конец дня свободной памяти сервера нету. Тоесть потиспенно рпхост набирает что-то на себя.
                Еще бывает самы проблемный момент, что память резко ушла в никуда и самое, что главное диспетчер задач не видит какой рпхост ее украл. Если Вы смотрели тему которую я развернул на партнерсе, то там я приложил скриншот, что в диспетчере задач суммируя колонки памяти не сходятся с общей… Тоесть ОС видить, что памяти нет и Монитор тоже это видит, но не видит куда она ушла…

                И уже, чтобы добить до конца вопрос, есть ли на сегоднишний день инструмент который анализирует ТЖ, а именно утечки, потому как в ЦУП вроде этой возможности нет.?

                • Андрей Бурмистров

                  >Я анализировал на отдельном сервере. Поэтому рпхост мне не особо удалось разогнать поскольку в базе я был один и моделировал ситуацию с отчетом, чтобы разобраться в каком месте не освобождается память.

                  Если бы отчет действительно приводил к утечкам, тогда это всегда бы четко воспроизводилось, как я понял в вашем случае такого не происходит. Если так, то причина проблемы не в отчете.

                  Если rphost не занимает памяти, то почему вы решили что память вообще занимает 1С. Может быть это какой-то другой процесс?

                  Если память резко ушла в никуда, то это хорошо, можно будет этот момент отследить. Если у вас несколько баз, то что бы локализовать проблему можно для каждой базы сделать свой rphost и потом посмотреть какой из них будет занимать память.

  3. mail.baranov

    Добрый день. Я поместил logcfg.xml сначала в «C:\Program Files (x86)\1Cv82\conf» – получившиеся каталоги не совпадали ни по имени ни по pid с процессами из диспетчера задач. После поместил logcfg.xml в «C:\Program Files\1Cv82\conf» – все получилось. Вопрос следующий почему создались логи в первом случае ? и второй – что за процесс еще стал логироваться mmc ?

    • Андрей Бурмистров

      Скорее всего у вас 64 разрядный сервер, в этом случае сам сервер ставится в каталог «C:\Program Files\1Cv82\conf», при этом в каталог «C:\Program Files (x86)\1Cv82\conf» ставятся клиенты и утилита для администрирования кластера серверов.

      Когда вы скопировали logcfg в «C:\Program Files (x86)\1Cv82\conf», вы дали указание системе собирать только клиентские логи (1cv8, 1cv8с) и логи утилиты администрирования кластера (mmc).

      Если клиенты на сервере не установлены, то будут собираться только логи mmc (в том случае если вы запустите утилиту администрирования).

      • Михаил Баранов

        все понял, спасибо – статьи замечательные;
        есть ли какой то план по потокам курса по оптимизации на 2015г ? (сейчас еще рано – знаний маловато, а вот ближе к осени-зиме))… )

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Вход на сайт

Зарегистрироваться

Подтверждение регистрации будет отправлено на указанный e-mail.

Я подтверждаю, что ознакомлен(а) с Пользовательским соглашением, принимаю его условия и даю свое согласие на обработку моих персональных данных.

Восстановить доступ

E-mail или логин

Ссылка на создание нового пароля будет отправлена на указанный e-mail.