Коллеги, продолжаем серию статей, посвященных технологическому журналу.
Сегодня мы покажем практику анализа логов ТЖ.
Другие статьи из серии «Технологический журнал»:
Анализ логов технологического журнала
- Более подробно познакомимся с логами в 1С: Предприятие 8
- Подробно изучим формат лога Технологического журнала
- Разберем на примере лог с записанными данными
Давайте посмотрим что произойдет, если мы создадим файл logcfg.xmlс указанной выше структурой и поместим его в каталог «C:\Program Files\1Cv82\conf»
Подождем 60 секунд и откроем каталог «C:\1C_Info\Logs», т.к. именно его мы указывали в 3 строке файла logcfg.
Если каталога 1C_Info на диске нет, то сервер 1С попробует его создать, но есть риск того что у пользователя под которым запущена служба 1С не будет прав. Поэтому рекомендуется создавать каталоги для логов вручную и проверять наличие прав у сервера 1С на запись в данный каталог.
В результате в каталоге мы видим 3 подкаталога.

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

Файл лога именуется по шаблону ГГММДДЧЧ.log.
Например, у меня первый лог за 6 апреля 2015 года 10 часов утра.
Если лог старше чем количество часов указанное в параметре history файла logcfg, то он автоматически удаляется платформой.
Давайте подробно разберем формат лога технологического журнала.
Событие записываются в лог только после того, как оно завершилось, т.к. необходимо фиксировать длительность события.
Строка лога имеет формат:
мм:сс.тттт-д, <ИмяСобытия>, <Уровень>, <Свойства>
Где:
мм – номер минуты в текущем часе.
сс – номер секунды в текущей̆ минуте.
тттт – номер десятитысячной доли текущей̆ секунды, для 8.3 здесь отображается номер миллионной доли.
д – длительность события в десятитысячных долях секунды, для 8.3 в миллионных долях.
<ИмяСобытия> – наименование события.
<Уровень> – уровень события в стеке текущего потока.
<Свойства> — свойства события разделенные запятыми, значения свойств проставлены через знак «=».
Разберем на примере.
Есть лог со следующим содержимым:
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.
Если Вы еще не вступили в группу — сделайте это сейчас и в блоке ниже (на этой странице) появятся ссылка на скачивание материалов.
[sociallocker id=»136011″]Полезные ссылки:
Если вы хотите узнать больше об оптимизации 1С и быть экспертом в этой области – пройдите наш новый курс «Оптимизация производительности 1С:Предприятие».



Добрый день, я добавил в папку конф платформы файл логов такой (создан в контсрукторе) , но он не создал папку с наименование rphost, а создал такого рода папки (1cv8_5568,mmc_6096 например) :
Здравствуйте.
Похоже что вы разместили файл на клиенте, а не на сервере.
Андрей здраствуйте, я проходил Ваш курс по оптимизации. У нас сейчас серьезные проблемы с утечкой памяти, может вы подскажете, а то видимо я какой-то момент пропустил. И вроде пересмотрел курс еще раз, но что-то с утечками возникли сложности. Пробовали ловить долгие запросы сервисами Гилева, только одни отчеты попадаются. Конфигурация УТ 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С к решению проблемы.
Вы не поверите но вот тех.поддержка не спешит руки особо морать я запостил вопрос им конечно же, вот он: https://partners.v8.1c.ru/forum/message/1416848?onlyMyThemesInput=true#m_1416848
Там в конце собственно я написал, что мы пробовали отчет ловить на разных серверах и видим как рпхост не освобождается полностью даже если закрыть 1С. Например сформировав приличный отчет валовой прибыли в несколько раз мы рпхост заставили перевалится за 1500 Мб и платформа создала еще один рпхост. После закрытия 1С второй рпхост освободился но вот первый остался висеть в памяти. Что получается, что фонновое формирование отчетов работает как-то не коррекнто… Я уже не знаю, что и думать, может есть смысл снять фонновое формирование?
Обычно rphost сначала забирает память, но примерно в середине рабочего дня память должна перестать расти и выравнивается, это нормальное поведение.
У вас на тестах, если отчет сформировать 10 раз, память будет каждый раз увеличиваться?
Если да, тогда как я уже описал, попробуйте через отладчик поймать то место где это происходит.
Так же попробуйте сформировать отчет вручную, не фоновым заданием, будут ли утечки в этом случае, если нет, значит опять же нужно с помощью отладчика найти в момент утечки.
Анализирую тоько один отчет на отдельном сервере. Ведомость по товарам организаций за квартал с большой детализацией. Вижу при каждом запуске прижок рпхоста, пока не удалось его больше 1.6 Гб разогнать. Но самое интересное дальше.
Если верить ТЖ и свойству Memory то у меня ничего ен сходится…Что я имею ввиду?
Проанализировал ТЖ, файл анализа с помощью не хитрых действий сделал обработку анализа лог-файла и результат преобразовать утечку в Мб.
утечки идут после каждого запуска по 690 Мб.Но у меня не сходится то, что общая память и после того как выйдет отчет рпхост вернулся к 900 Мб, местами был 1500 Мб.
Что же получается? что утечки есть и одновременно их нет? Тоесть платформу умеет их побороть? Тогда ТЖ получается у нас неинформативный, поскольку это далеко не утечка? Я запутался…
ТЖ не умеет отличать утечки от не утечек, он может только сказать что память была выделена и не была освобождена после вызова. В начале работы память постоянно выделяется и не освобождается это нормально, заполняются всякие буферы и кэши, до середины рабочего дня память rphost может расти, это норма. Плохо если у вас память растет постоянно в течении всего дня, вот тогда можно говорить об утечках, иначе это стандартная работа. Если у вас рабочий процесс занимает максимум 1,5 Гб то это вообще почти ничего, даже не вижу тут никаких проблем. Включите в системном мониторе счетчики слежения за памятью рабочих процессов и посмотрите как будет изменятся график в течении дня, если примерно после обеда память уже значительно не растет, значит у вас все нормально и утечек нет.
Я анализировал на отдельном сервере. Поэтому рпхост мне не особо удалось разогнать поскольку в базе я был один и моделировал ситуацию с отчетом, чтобы разобраться в каком месте не освобождается память.
Насчет счетчиков, а как потом понять, что счетчик rphost#1 …. rphost#n к какому Id хоста отнести, чтобы проанализировать ТЖ конкретного хоста.
И еще, память растет не постоянно, тоесть как Вы и говорите идет обычная работа. Но бывают моменты, что под конец дня свободной памяти сервера нету. Тоесть потиспенно рпхост набирает что-то на себя.
Еще бывает самы проблемный момент, что память резко ушла в никуда и самое, что главное диспетчер задач не видит какой рпхост ее украл. Если Вы смотрели тему которую я развернул на партнерсе, то там я приложил скриншот, что в диспетчере задач суммируя колонки памяти не сходятся с общей… Тоесть ОС видить, что памяти нет и Монитор тоже это видит, но не видит куда она ушла…
И уже, чтобы добить до конца вопрос, есть ли на сегоднишний день инструмент который анализирует ТЖ, а именно утечки, потому как в ЦУП вроде этой возможности нет.?
>Я анализировал на отдельном сервере. Поэтому рпхост мне не особо удалось разогнать поскольку в базе я был один и моделировал ситуацию с отчетом, чтобы разобраться в каком месте не освобождается память.
Если бы отчет действительно приводил к утечкам, тогда это всегда бы четко воспроизводилось, как я понял в вашем случае такого не происходит. Если так, то причина проблемы не в отчете.
Если rphost не занимает памяти, то почему вы решили что память вообще занимает 1С. Может быть это какой-то другой процесс?
Если память резко ушла в никуда, то это хорошо, можно будет этот момент отследить. Если у вас несколько баз, то что бы локализовать проблему можно для каждой базы сделать свой rphost и потом посмотреть какой из них будет занимать память.
Добрый день. Я поместил 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г ? (сейчас еще рано — знаний маловато, а вот ближе к осени-зиме))… )
Доброго дня, Михаил!
Дата начала следующего потока еще не определена.
Ориентировочно, осень 2015 г.
Рекомендуем Вам пройти предварительную регистрацию http://курсы-по-1с.рф/ускорение-1с/#pre-reg-point и мы обязательно свяжемся с Вами.