Анализ взаимоблокировок

0. vasilev2015 1842 20.03.20 15:05 Сейчас в теме
Скрипт Bash, который выводит полную информацию взаимоблокировок по технологическому журналу. Не имеет аналогов в отечественных публикациях.

Перейти к публикации

Вознаграждение за ответ
Показать полностью
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. VKislitsin 20.03.20 16:41 Сейчас в теме
Николай, еще один плюс!
Было бы здорово, если после каждого скрипта был бы приведен образец вывода его результата.
Иначе приходится либо выполнять этот вывод мысленно, либо повторять у себя. А данные для повторения есть не всегда..
2. vasilev2015 1842 20.03.20 16:49 Сейчас в теме
(1) Здравствуйте !

Мне выгодно, чтобы Вы повторили у себя и если будут ошибки присылали. Буду признателен за любые замечания и предложения.
3. VKislitsin 20.03.20 17:30 Сейчас в теме +0.1 $m
(2) Николай, я отвечу длинно :)
Не знаю, как другие, но я практически никогда не использую чужие скрипты в том виде, как они опубликованы. При этом всегда их изучаю, чтобы что-то подсмотренное перенять и применить в своей работе.

Вот здесь, например, мне интересно было каким образом Вы получили имя файла в строке для awk. Я вижу что его подставляет в начало каждой строки egrep. Но, в таком случае, контексты теперь уж точно обрезаются только до первой строки. По крайней мере, так мне сообщает мой "мысленный вывод результата". Уж у TLOCK-ов то контекст точно не однострочный. Или я не прав?

Кроме того, как я уже писал, для запуска скрипта в том виде, как он опубликован, нужны подходяще собранные логи. У меня, например, сейчас нет подходящих. Рыться в архивах? Ждать когда же вылезет какая-нибудь взаимоблокировка? Так они устранены давно уже. Моделировать специально для проверки скрипта? Всё это слишком трудозатратно, по крайней мере, пока нет реальной потребности решить проблему.

Насчет ошибок и отзывов: вот я почему-то думаю, что прямо сейчас, по прочтению статьи, вряд ли кто-то бросится запускать это у себя. Может быть отметят в избранное, чтобы вернуться когда понадобится. Поэтому фидбэка тут особо полезного не получить. А статья могла бы быть информативнее с примерами вывода. Но это конечно, лишь мое скромное мнение.
jaroslav.h; user843241; berezdetsky; o.nikolaev; Xershi; MVK80; +6 Ответить
4. vasilev2015 1842 20.03.20 18:35 Сейчас в теме
(3) Добавил символическое вознаграждение за длинный ответ ))
В моем ТЖ контекст только в TTimeout, TDeadlock одной строкой.
Файл настройки ТЖ обычный.

Скрипт кому-то пригодится. Буду ждать.
5. VKislitsin 20.03.20 18:40 Сейчас в теме
(4) Спасибо :)
А вообще, интересно Вы с awk-ом работаете. Мне раньше не встречалось, чтобы разделители через "или" набирались.
И корова с тигром - забавно :)
15. Sloth 195 21.03.20 21:53 Сейчас в теме
(5)
А вообще, интересно Вы с awk-ом работаете. Мне раньше не встречалось, чтобы разделители через "или" набирались.

Тоже оценил такую конструкцию, однако интересно сколько вычислительного времени расходуется на такой разбор ...
16. vasilev2015 1842 21.03.20 23:30 Сейчас в теме
(15) указал, что скрипт обрабатывает 3Гб за 10 минут. Для любого регулярного выражения awk, egrep условия проверяются последовательно. Как известно, конструкция '^.{12,25},CALL,.*' работает на порядок быстрее, чем ',CALL,.*'
17. Sloth 195 21.03.20 23:33 Сейчас в теме +0.1 $m
(16) дык я к тому и озадачился, что возможно без использования подобной конструкции скрипт бы работал, скажем, 3 минуты, но стал бы при этом менее читаемым ...
18. vasilev2015 1842 21.03.20 23:35 Сейчас в теме
(17) да, интересно. Буду признателен, если замеряете скорость для другого способа и сравните.
6. Vladimir Litvinenko 2362 21.03.20 00:56 Сейчас в теме
Спасибо! Полезно как для практического применения, так и для популяризации bash/Linux инструментов.

Не сочтите за придирку, но хотелось бы видеть немного комментариев в самом коде, хотя бы ссылающихся на пункты пояснений, которые приводятся до этого в статье. Вы используете \ для много строчных выражений. А это позволяет использовать комментарии прямо в скрипте:
printf '3e2' | \
# comment
egrep --only-matching '3'

Таким образом код можно разделять на более читаемые логические блоки.

Иногда кстати можно услышать, что записанный в баше RegExp - это write only code. Потому что никому кроме автора редактировать не удаётся. Но такой ситуации можно избежать, если снабжать отдельные строки комментариями прямо в коде. Ведь передавать такой код например коллеге удобнее без дополнительных ссылок на статьи ))

Планируете ли Вы ещё писать на эту тему? Очень интересные приёмы демонстрируете.
YPermitin; +1 Ответить
8. vasilev2015 1842 21.03.20 10:37 Сейчас в теме
(6) Здравствуйте !

Про комментарии в коде думал, но есть нюансы:

1. Хотелось однообразия, а после каждой строки не получилось.
Например, awk разбит на несколько строк - внутри не поставить #
2. На stackoverflow нет комментариев после каждой строки
3. Если скрипт потеряет связь со статьей - для меня скорее недостаток

Поэтому я сделал коммернтарии для каждой строки, но поместил их после
7. Xershi 1001 21.03.20 09:54 Сейчас в теме
У Гилева как то видел обработку, которая в режиме онлайн показывает, что происходит в базе. У вас нет аналога?
Это решение уже постфактум даёт анализ для исправления.
9. vasilev2015 1842 21.03.20 10:38 Сейчас в теме
(7) Здравствуйте !

Нет, пока нет аналога. ))
10. Xershi 1001 21.03.20 10:41 Сейчас в теме
(9) недавно провел обновление УТ 11.4.1 на 11.4.7.
И выполнил проверку кода конфигурации.
Нашёл множество ошибок.
И хотел этот массив обработать быстро и наглядно.
Не писали парсер, который так сделает?
Обновление я уже поставил на рабочую базу. И ошибки исправлены.
Но хотелось бы иметь такой инструмент.
11. vasilev2015 1842 21.03.20 10:46 Сейчас в теме
(10) да, у меня была похожая ситуация.
в статье https://infostart.ru/public/1095079/
парсер для файла ОтчетОСравнении.txt сравнения конфигураций.
12. Xershi 1001 21.03.20 11:45 Сейчас в теме
(11) эту я видел. Тут же речь немного о другом.
13. YPermitin 9061 21.03.20 14:06 Сейчас в теме
(0) статьи очень интересные.
Обязательно продолжайте!
14. vasilev2015 1842 21.03.20 15:35 Сейчас в теме
(13) спасибо, буду стараться.
YPermitin; +1 Ответить
19. buganov 153 22.03.20 13:18 Сейчас в теме
20. Serg O. 187 27.03.20 12:30 Сейчас в теме
Про анализ каких логов идёт речь? логи SQL или логи 1С сервера?
если логи 1С - технологический журнал...
то его сначала включить надо... аккуратно иначе логи не 3 Гб будут а 300 Гб

если логи - это лог тех.журнала 1С сервера... то про какую версию это всё?
8.3.XX разные тем более 8.2 и 8.3 вообще

и ещё увидел во 2-ом скрипте ссылку на логи 2003 года?! это вы так "пошутили"?
--include "200311*.log"

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

есть прекрасные инструменты и в 1С... и всякие внешние обработки и публикации
зачем ещё один "велосипед"... Вы конечно молодец, и так можно (если умеючи)

Ещё "комментарий"! - не все блокировки (взаимоблокировки DeadLock) отражаются в тех.журнале как прямо "блокировки"...
есть "ошибки" ERROR ... которые показываются пользователям как ошибка блокировки объекта...
или ошибка совместного доступа и т.д.
это те ошибка, которые можно "увидеть" в Журнале регистрации в 1С...
а некоторые блокировки вообще не поймать... без SQL-логов

я лично считаю, что "лучший" инструмент анализа тех.журнала у группы Гилёва gilev.ru
и бесплатный и легко "включаемый" - само всё анализируется... автоматически
и блокировок http://www.gilev.ru/latch/
и взаимо-блокировки http://www.gilev.ru/deadlock/
и долгие запросы - http://www.gilev.ru/querytj/
и анализ Журнала регистрации http://www.gilev.ru/status/

есть прекрасные статьи и видео от Андрея Бурмистрова... выступления на ИнфоСтарт - 2014, 2015, 2016г.

статьи от Андрея Бурмистрова
"Ускорение в 100 раз. Решаем проблему блокировок https://infostart.ru/public/629017/
Опять упало https://infostart.ru/public/205264/
система автоматизации анализа ошибок, связанных со скоростью работы 1С https://infostart.ru/public/861201/
ещё статьи
Ловля блокировок на связке "Microsoft SQL server - 1С" https://infostart.ru/public/1081863/
21. vasilev2015 1842 27.03.20 13:58 Сейчас в теме
(20) Здравствуйте !

В статье указано, что анализируем технологический журнал.

Предполагается, что читатель умеет настраивать ТЖ.
Для начинающих есть более подробная статья https://infostart.ru/public/825405

Тестировал на платформе 8.3.12, должно работать на (почти)всех платформах.
200311 - значит, 20 год, месяц 03.

Не знаю, что любят 1С-программисты, а разработчики сервисов
точно не любят делиться своими достижениями и открывать код.

Но мы теперь знаем, что сервис (deadlock) можно заменить на десять строчек кода.

Открыто, для всех.
VKislitsin; Sloth; +2 Ответить
Оставьте свое сообщение
Вопросы с вознаграждением