Вход | Регистрация


1С:Предприятие ::

Метки: 

Есть эксперты по техн. вопросам? Сеанс "засыпает" при фиксации длинной транзакции.

Я
   pavig
 
07.03.18 - 11:00
Всем привет.

Проблема плавающая, сложная и не тривиальная.

Дано.
Есть некий управленческий документ, который собирает в себя всю движуху по складу и кассе (в т.ч. производство) за день по точке. Таких точек в день порядка 200.
Документ достаточно большой. Зачем он нужен - вопрос отдельный. Сейчас вопрос не в этом.
Есть отдельный механизм отражения этого документа в бух. учете. По некоторому событию в системе ночью начинается эта тема.
Система по данным этого документа последовательно проводит кучу проверок и "рождает" кучу бух. документов.
Фишка в том, что всё это происходит в одной транзакции (почему - тоже вопрос отдельный пока на него не будем отвлекаться). Один документ Упр - одна транзакция, в которой рождаются и проводятся бух. документы.
Длительность всей операции составляет примерно от 50 до 70 секунд, и это нас устраивает (пока) на один документ.

Проблема.
Иногда (грубо говоря, раз в час)
При фиксации транзакции
ЗафиксироватьТранзакцию();
сеанс... я даже не знаю как это назвать... "зависает"...?

Симптомы:
1. В консоли администрирования 1С "зависший" сеанс наращивает колонку "Захвачено СУБД", колонка "Заблокировано СУБД" - пустая.
см. скрин:
http://screenshot.ru/upload/image/aJ51
2. В Журнале регистрации "зависшая" транзакция имеет статус "Не завершена", причем никаких больше записей в журнале с момент "зависания" нет.
см. скрин:
http://screenshot.ru/upload/image/aJ5f
3. Никаких зависимостей от конкретного документа нет. То есть на одном и том же документе транзакция может зависнуть, а может пройти без проблем.

Что уже делали.
Переносили всю базу на другой сервер СУБД (не меняли сервер приложений). Не помогло.
Запускали в тестовой базе (изолированный сервер) - ситуация не воспроизводится.

Просьба "обратиться к специалисту" и "переделать логику документа" не предлагать, ибо сами до этого варианта догадались, но интересно решить конкретно эту проблему, а не подстраиваться под обстоятельства.

Всем заранее спасибо.
 
 
   Вафель
 
1 - 07.03.18 - 11:05
перезагрузку сервера 1с делали?
   pavig
 
2 - 07.03.18 - 11:05
(1) Конечно всё перезапускали
   ildary
 
3 - 07.03.18 - 11:11
(2) Серверный кеш чистили?
   pavig
 
4 - 07.03.18 - 11:13
(3)
Проводили перерегистрацию базы в кластере.
Не помогло.
   vi0
 
5 - 07.03.18 - 11:23
(0) что значит зависает?
   pavig
 
6 - 07.03.18 - 11:24
(5) Значит смотри на скринах - с определенного момента ничего в базе не происходит.
   Вафель
 
7 - 07.03.18 - 11:26
Очевидно, что это глюк сервера.
Экспертов не учат разбираться в глюках к сожалению
   ИТ директор
 
8 - 07.03.18 - 11:26
(5) Я конечно не X-перд, но спрошу.

1. Колонка "Заблокировано СУБД" и должна быть пустая, если конфа на упр. блокировках.  
2. "Захвачено СУБД" говорит о том что идет вызов СУБД, и это нормально.
3. С чего ты взял что ничего не происходит?
   vi0
 
9 - 07.03.18 - 11:26
(6) как долго?
   vi0
 
10 - 07.03.18 - 11:28
(0) > Иногда (грубо говоря, раз в час)
раз в час зависает, а выполняется как часто?
 
 Рекламное место пустует
   pavig
 
11 - 07.03.18 - 11:29
(8) "С чего ты взял что ничего не происходит?", (9)

Транзакция не фиксируется очень долго.
Больше часа не проверяли, так как другие работать не могут и обмены стоят.
Просто выкидывали сеанс.
   pavig
 
12 - 07.03.18 - 11:30
(10)
Постоянно, если есть что проводить.
   ИТ директор
 
13 - 07.03.18 - 11:31
(11)
1. Сними трассу в это время и увидишь что происходит на SQL SERVERe.
2. Настрой ТЖ на события DBMSSQL и SDBL.
3. Сопоставь.
   pavig
 
14 - 07.03.18 - 11:32
(13)
Ок спасибо за дельный совет.
Отпишу по результату.
   vi0
 
15 - 07.03.18 - 11:32
(12) постоянно, т.е. выполняется попытка ежесекундно в одном сеансе?
   pavig
 
16 - 07.03.18 - 11:33
(13)
П.С. парсить ТЖ как посоветуешь? Есть готовый парсер?
   Cyberhawk
 
17 - 07.03.18 - 11:33
(6) "ничего в базе не происходит" // Чем докажешь?
   pavig
 
18 - 07.03.18 - 11:33
(15)
Раз в 10 минут запускается регламентное задание.
Естественно, если оно на текущий момент выполняется (даже если "зависшее") то новое задание не стартует.
   ИТ директор
 
19 - 07.03.18 - 11:34
+(13) по SDBL увидишь транзакции, а если транзакция зависла на SQL SERVER то смотри dbcc opentran
   pavig
 
20 - 07.03.18 - 11:34
(17)
Ничем не буду доказывать ибо имею только записи в ЖР и консоль администрирования 1С.
Что там происходит по факту - это и есть цель узнать.
   ИТ директор
 
21 - 07.03.18 - 11:35
(16) Готовый парсер только ЦУП
   pavig
 
22 - 07.03.18 - 11:36
Блин там в ТЖ столько всякого *овна валится
   ИТ директор
 
23 - 07.03.18 - 11:36
Но ЦУП в твоем случае не подойдет, т.к. он рассчитан на готовые сценарии, а у тебя непонятно что вообще происходит
   Cyberhawk
 
24 - 07.03.18 - 11:36
(20) Переобуваешься? )
   Cyberhawk
 
25 - 07.03.18 - 11:37
(21) ИР чем не устраивает?
   pavig
 
26 - 07.03.18 - 11:37
(25)
Инструменты разработчика?
   ИТ директор
 
27 - 07.03.18 - 11:39
(25) не пробовал, не знаю
   pavig
 
28 - 07.03.18 - 11:40
(25)
Спасибо за дельный совет, попробую.
   Cyberhawk
 
29 - 07.03.18 - 11:41
(26) Да. Кастую TormozIT в ветку, он щас даст ссылку на нужный инструмент по парсингу ТЖ
   ИТ директор
 
30 - 07.03.18 - 11:44
(28) ЛОЛ, что ты попробуешь?
   Cyberhawk
 
31 - 07.03.18 - 11:45
(30) Запустить ИР, настроить ТЖ, собрать ТЖ, поглядеть )
   ИТ директор
 
32 - 07.03.18 - 11:47
(22) Сделай отбор по сеансу который висит

<?xml version="1.0" encoding="UTF-8"?>
<config xmlns="http://v8.1c.ru/v8/tech-log">;
<log location="C:\LOGS" history="1">
<event>
<property="Name" value="SDBL"/>
<eq property="SessionID" value="332"/>
</event>
<property name="all"/>
</log>
</config>

Отпишись что получилось
   ИТ директор
 
33 - 07.03.18 - 11:50
*поправочка <eq property="Name" value="SDBL"/>
 
 
   тарам пам пам
 
34 - 07.03.18 - 12:07
Таймаут для блокировок не трогали? А то, учитывая что монопольно не воспроизводится, очень похоже на ожидание на блокировках.
   Вафель
 
35 - 07.03.18 - 12:08
Разве можно настраивать таймаут для упр блокировок?
   pavig
 
36 - 07.03.18 - 12:09
(34)
Таймаут 60 секунд
   pavig
 
37 - 07.03.18 - 12:09
(30)
Парсер ТЖ из ИР
   Elatiell
 
38 - 07.03.18 - 12:09
(0) Сколько строк в документе? Сколько строк в порождаемых документах?(хотя бы порядок укажите сотни, десятки тысяч и т.д.) Какие еще операции выполняются в базе вместе с описанной? Что с загрузкой оборудования в момент выполнения операции? И все же еще раз спрошу вопрос: "Что значит "Зависает"?" - это означает никто зайти в базу не может или другие документы перестают записываться или что-то третье?
   Cyberhawk
 
39 - 07.03.18 - 12:11
(38) "Что значит "Зависает"?"" // Они ждали час и ничего не "отвисло" )
   pavig
 
40 - 07.03.18 - 12:15
(38)

"Сколько строк в документе? Сколько строк в порождаемых документах?(хотя бы порядок укажите сотни, десятки тысяч и т.д.)"
Строк в документах от 5 до 150.
Количество порождаемых документов от 3 до 6.
"Какие еще операции выполняются в базе вместе с описанной?"
Много всего, обычная работа обычной бухгалтерии предприятия. Плюс частые обмены РИБ (примерно каждые 10 минут).
"Что с загрузкой оборудования в момент выполнения операции?"
Сервер мощный, на нем крутится несколько разных баз поэтому зависимости загрузки оборудования админами на были не выявлены.

"И все же еще раз спрошу вопрос: "Что значит "Зависает"?" - это означает никто зайти в базу не может или другие документы перестают записываться или что-то третье?"
см. (39), это всё что мы знаем. Посмотри скрины, там в принципе видно, что я имею ввиду под "зависает".
   pavig
 
41 - 07.03.18 - 12:16
Версия платформы 8.3.10.2667
   pavig
 
42 - 07.03.18 - 12:16
Скуль 2012
   pavig
 
43 - 07.03.18 - 12:17
Обработки проведения документов БУ почти типовые, никаких "кривых рук" замечено не было.
   ИТ директор
 
44 - 07.03.18 - 12:18
(42) ТЖ собрал?
   pavig
 
45 - 07.03.18 - 12:22
(44)
1. Трассировку скуля запустили на долгие операции.
2. ТЖ настроен на долгие запросы больше 60 секунд:

<?xml version="1.0" encoding="UTF-8"?>

<config xmlns="http://v8.1c.ru/v8/tech-log"&gt;
    <query:log xmlns:query="http://v8.1c.ru/v8/tech-log&quot; location="E:\logs\Query1с_1" history="8">
        <query:event>
            <query:eq property="Name" value="SDBL"/>
            <query:ge property="Duration" value="600000"/>
        </query:event>
        <query:event>
            <query:eq property="Name" value="DBMSSQL"/>
            <query:ge property="Duration" value="600000"/>
        </query:event>
        <query:property name="p:processName"/>
        <query:property name="t:computerName"/>
        <query:property name="t:connectID"/>
        <query:property name="dbpid"/>
        <query:property name="Context"/>
        <query:property name="Sql"/>
        <query:property name="Usr"/>
    </query:log>
</config>

Проблема пока еще не воспроизводилась.

Как только воспроизведется - подожду минут 10, пусть текущий ТЖ пособирает логи, потом настрою на номер сеанса который завсит по твоему примеру из (32)


Параллельно скачиваю ИР, покурю их немного.
   ИТ директор
 
46 - 07.03.18 - 12:24
(35) можно
   kauksi
 
47 - 07.03.18 - 12:25
тупо писать в лог/внешний файл все действия твоей процедуры. там где остановицца там и затык
   pavig
 
48 - 07.03.18 - 12:28
(47)
По этому направлению тоже работаем. Пишем, добавляем, ищем.
   pavig
 
49 - 07.03.18 - 12:32
Похоже что в (0) ошибка.
Проблема начинается не при 
ЗафиксироватьТранзакцию(); 
а где-то раньше, внутрях типовых.
 
 Рекламное место пустует
   ИТ директор
 
50 - 07.03.18 - 12:34
(49) *Рукалицо
Ты же сам жалуешься что ТЖ получается большого объема.
Я тебе показал как сделать отбор по конкретному сеансу по определенному событию. По идее надо ловить все события этого сеанса, прежде всего чтобы понять что делает этот сеанс если он вообще что-то делает (может он вообще тупо ничего не делает и это глюк платформы).

Ну и посмотреть активные транзакции на СУБД, наверняка там есть одна длительная если соединение удерживается.
   Elatiell
 
51 - 07.03.18 - 12:34
(45) С чего Вы взяли, что это долгий запрос? Судя по вашему описанию зависание происходит, при фиксировании транзакции, то есть, грубо говоря, при записи в файл логов транзакций.
   Elatiell
 
52 - 07.03.18 - 12:34
(51) Отбой. Прочитал (49)
   ИТ директор
 
53 - 07.03.18 - 12:36
(49) Сделай отбор всех событий по сеансу который висит, посмотри что он делает

<?xml version="1.0" encoding="UTF-8"?> 

<config xmlns="http://v8.1c.ru/v8/tech-log">;;
<log location="C:\LOGS" history="1">
<event>
<ne property="Name" value=""/>
<eq property="SessionID" value="332"/>
</event>
<property name="all"/>
</log>
</config>
   pavig
 
54 - 07.03.18 - 12:42
(53)
Блин пока он зависнет непонятно сколько ждать.
Этот не хуже будет все события собирать чем только долгие запросы? Не это ли геморрой?
Когда уже зависнет - тогда да, буду всё собирать по этому сеансу.

Или я не прав?
   vi0
 
55 - 07.03.18 - 13:03
(54) профайлер посмотреть еще никто не советовал?
   pavig
 
56 - 07.03.18 - 13:08
(55) см (13)
   Elatiell
 
57 - 07.03.18 - 13:10
(56) Ты отпишись как найдешь затык. Интересножеж. :)
   Вафель
 
58 - 07.03.18 - 13:11
(54) не факт что виснет именно запрос.
Но если долго ждать, то объем лога может быть гигабайты итам уже найти что-то может быть весьма проблематично
   pavig
 
59 - 07.03.18 - 13:11
(57)
Обязон.
Оно зараза теперь и не зависает)
Сидит где-то и не отсвечивает) видимо понятно стало что всерьез занялись)
   pavig
 
60 - 07.03.18 - 13:12
(58)
Вот я этого опасаюсь.
Сейчас малыми дозами Тж попробую обойтись. Если не поможет - включу на полную катушку по совету ИТ директор
   ИТ директор
 
61 - 07.03.18 - 13:14
(54) Ну настрой на 60 сек, хуже не станет. Но 60 сек это очень много, вряд ли уж у вас там запросы такие долгие и поэтому таким образом причину ты не найдешь.
(60) у меня как раз не на полную катушку, а только по проблемному сеансу чтобы понять что он делает
   Elatiell
 
62 - 07.03.18 - 13:38
(60) А регламентные операции по статистике и индексам в какое время выполняются? Нет закономерностей, что, например, после этих операций зависания начинаются?
   vi0
 
63 - 07.03.18 - 13:41
(56) и что профайлер говорит?
Какая нагрузка на сервер 1с,сервер скл?
   TormozIT
 
64 - 07.03.18 - 14:03
Бесплатный инструмент для анализа техножурнала из подсистемы "Инструменты разработчика"
http://devtool1c.ucoz.ru/index/analiz_tekhnozhurnala/0-16
   pavig
 
65 - 07.03.18 - 14:09
(64)
Уже использую, великолепная штукенция!
   pavig
 
66 - 07.03.18 - 14:11
(63)
Еще разбираемся, я там первый раз в жизни, админ тоже)
   Cyberhawk
 
67 - 07.03.18 - 14:26
(66) "я там первый раз в жизни, админ тоже)" // А ты там кем?
   Вафель
 
68 - 07.03.18 - 14:36
(64) большие журналы не проанализируешь таким инструментом
   TormozIT
 
69 - 07.03.18 - 16:48
(68) Если указать интересующее окно во времени, то проанализируешь. Еще 64-разрядный толстый клиент рекомендую, если журнал большой даже в интересующем интервале.
   pavig
 
70 - 12.03.18 - 12:14
(67)
Имелось ввиду что в профайлере я был в первый раз в жизни
   pavig
 
71 - 12.03.18 - 12:20
Коллеги, всем спасибо за полезные советы.

По настройке ТЖ товарища
https://www.forum.mista.ru/users.php?id=106078
удалось обнаружить неоптимальный запрос: в очень большом регистре сведений было соединение по полую регистратора. Видимо, временами это очень сильно огорчало СУБД.

Запрос оптимизирован, проблема устранена.

Благодарю!



Список тем форума
Рекламное место пустует Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует