Коллеги, продолжаем серию статей, посвященных технологическому журналу.
Сегодня мы покажем практику анализа логов ТЖ.
Другие статьи из серии «Технологический журнал»:
Анализ логов технологического журнала
- Более подробно познакомимся с логами в 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.
Если Вы еще не вступили в группу – сделайте это сейчас и в блоке ниже (на этой странице) появятся ссылка на скачивание материалов.
Ссылка доступна для зарегистрированных пользователей)
Ссылка доступна для зарегистрированных пользователей)
Ссылка доступна для зарегистрированных пользователей)
Если вы хотите узнать больше об оптимизации 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 и мы обязательно свяжемся с Вами.