Microsegment.ru
  • Главная страница
  • О проекте
  • Портфолио
  • Блог
Tessa

Анализ ошибок в Tessa (Тесса)

Анализ ошибок в Tessa (Тесса)
Tessa

Ошибки в Tessa (далее Тесса) можно условно разделить на те, что фиксируются в базе данных (далее БД) Тессы, и на те, что можно отследить только путем анализа работы инфраструктуры Тессы, например, через их логи. Тесса достаточно подробно фиксирует пользовательские и системные ошибки. Однако, системные ошибки, связанные с инфраструктурой Тессы, через ее БД можно отследить лишь отчасти. При анализе ошибок важен их срез текущий, но для полного анализа требуется срез почасовой или посуточный. Это позволяет видеть ошибки в динамике.

Исчерпывающая информация об ошибках, содержащаяся в БД Тессы, для визуального анализа позволяет структурировать информацию об ошибках в разном контексте. Например, ее можно структурировать по типам ошибок и интервалам появления ошибок. Подобный пример, приведет ниже.

Запрос на извлечение информации об ошибках, содержащейся в БД Тессы с группировкой по типу ошибки и дате ее появления за последние 7 суток:

-- Количество ошибок с группировкой по пользователям, категориям и дням
DECLARE @enddatetime DATETIME
DECLARE @startdatetime DATETIME
SET @enddatetime = DATEADD(HOUR, -3, GETDATE())
SET @startdatetime = DATEADD(DAY, -6, CONCAT(DATEPART(yyyy, @enddatetime), '-', DATEPART(mm, @enddatetime), '-', DATEPART(dd, @enddatetime), ' 03:00:00.000'))

SELECT  @startdatetime AS StartDatetime, 
        @enddatetime AS EndDatetime;

-- Критические ошибки
DECLARE @critical_error_1 VARCHAR(100)
DECLARE @critical_error_2 VARCHAR(100)
DECLARE @critical_error_3 VARCHAR(100)
DECLARE @critical_error_4 VARCHAR(100)

SET @critical_error_1 = 'Exicution Timeout Expiried. %' --4
SET @critical_error_2 = 'Error converting file%' --8
SET @critical_error_3 = 'Не найдена карточка с идентификатором ''00000000-0000-0000-0000-000000000000''.' --14
SET @critical_error_4 = 'Нельзя загрузить карточку. Таймаут при ожидании, пока другой сотрудник изменяет карточку. %' --32

-- SELECT 1 (Errors types)

WITH
-- Условия для анализа ошибок
AnaliziedUsers
AS
(
    SELECT pr.ID
    FROM PersonalRoles pr (NOLOCK)
),

-- Ошибки
errors_select
AS
(
    SELECT  e.ID,
            e.Modified,
            e.ModofoedByName,
            CASE
                WHEN e.Text = LIKE @critical_error_1
                OR e.Text = LIKE @critical_error_2
                OR e.Text = LIKE @critical_error_3
                OR e.Text = LIKE @critical_error_4 THEN 1
                ELSE 0
            END AS RateError,
            CASE
                WHEN e.Text = LIKE @critical_error_1 THEN 'Exicution Timeout Expiried...'
                WHEN e.Text = LIKE @critical_error_2 THEN 'Error converting file...'
                WHEN e.Text = LIKE @critical_error_3 THEN @critical_error_3
                WHEN e.Text = LIKE @critical_error_4 THEN 'Нельзя загрузить карточку. Таймаут при ожидании, пока другой сотрудник изменяет карточку.'
            END AS TypeError,
            dbo.Localize(i.TypeCaption, 25) AS TypeCaption,
            e.Text,
            e.CardDigest,
            e.Category
    FROM Errors AS e (NOLOCK)
    INNER JOIN AnalizedUsers au ON au.ID = e.ModifiedByID
    LEFT JOIN WorkflowEngineErrors wee (NOLOCK) ON wee.ErrorCardID = e.ID
    LEFT JOIN WorkflowEngineProcesses wep (NOLOCK) ON wep.ID = wee.ID
    LEFT JOIN DocumentCommonInfo dci (NOLOCK) ON dci.ID = wep.CardID
    LEFT JOIN Instances i (NOLOCK) ON i.ID = dci.ID
    WHERE e.Modified > @startdatetime
)

SELECT  RateError AS [Рейтинг],
        CardType AS [Тип карточки документа],
        TypeError AS [Тип ошибки],
        CardDigest AS [Подкатегория],
        SUM(CASE WHEN Modified BETWEEN @startdatetime
                                   AND DATEADD(DAY, -5, CONCAT(DATEPART(yyyy, @enddatetime), '-', DATEPART(mm, @enddatetime), '-', DATEPART(dd, @enddatetime), ' 02:59:59.999')) THEN 1 ELSE 0 END) AS [-6 дней],
        SUM(CASE WHEN Modified BETWEEN DATEADD(DAY, -5, CONCAT(DATEPART(yyyy, @enddatetime), '-', DATEPART(mm, @enddatetime), '-', DATEPART(dd, @enddatetime), ' 03:00:00.000'))
                                   AND DATEADD(DAY, -4, CONCAT(DATEPART(yyyy, @enddatetime), '-', DATEPART(mm, @enddatetime), '-', DATEPART(dd, @enddatetime), ' 02:59:59.999')) THEN 1 ELSE 0 END) AS [-5 дней],
        SUM(CASE WHEN Modified BETWEEN DATEADD(DAY, -4, CONCAT(DATEPART(yyyy, @enddatetime), '-', DATEPART(mm, @enddatetime), '-', DATEPART(dd, @enddatetime), ' 03:00:00.000'))
                                   AND DATEADD(DAY, -3, CONCAT(DATEPART(yyyy, @enddatetime), '-', DATEPART(mm, @enddatetime), '-', DATEPART(dd, @enddatetime), ' 02:59:59.999')) THEN 1 ELSE 0 END) AS [-4 дня],
        SUM(CASE WHEN Modified BETWEEN DATEADD(DAY, -3, CONCAT(DATEPART(yyyy, @enddatetime), '-', DATEPART(mm, @enddatetime), '-', DATEPART(dd, @enddatetime), ' 03:00:00.000'))
                                   AND DATEADD(DAY, -2, CONCAT(DATEPART(yyyy, @enddatetime), '-', DATEPART(mm, @enddatetime), '-', DATEPART(dd, @enddatetime), ' 02:59:59.999')) THEN 1 ELSE 0 END) AS [-3 дня],
        SUM(CASE WHEN Modified BETWEEN DATEADD(DAY, -2, CONCAT(DATEPART(yyyy, @enddatetime), '-', DATEPART(mm, @enddatetime), '-', DATEPART(dd, @enddatetime), ' 03:00:00.000'))
                                   AND DATEADD(DAY, -1, CONCAT(DATEPART(yyyy, @enddatetime), '-', DATEPART(mm, @enddatetime), '-', DATEPART(dd, @enddatetime), ' 02:59:59.999')) THEN 1 ELSE 0 END) AS [-2 дня],
        SUM(CASE WHEN Modified BETWEEN DATEADD(DAY, -1, CONCAT(DATEPART(yyyy, @enddatetime), '-', DATEPART(mm, @enddatetime), '-', DATEPART(dd, @enddatetime), ' 03:00:00.000'))
                                   AND DATEADD(DAY, -0, CONCAT(DATEPART(yyyy, @enddatetime), '-', DATEPART(mm, @enddatetime), '-', DATEPART(dd, @enddatetime), ' 02:59:59.999')) THEN 1 ELSE 0 END) AS [Вчера],
        SUM(CASE WHEN Modified BETWEEN DATEADD(DAY, -0, CONCAT(DATEPART(yyyy, @enddatetime), '-', DATEPART(mm, @enddatetime), '-', DATEPART(dd, @enddatetime), ' 03:00:00.000'))
                                   AND @enddatetime THEN 1 ELSE 0 END) AS [Сегодня],
        COUNT(ID) AS [ВСЕГО]
FROM error_select
GROUP BY RateError, CardType, TypeError, CardDigest, Category
ORDER BY RateError DESC, [Сегодня] DESC, [ВСЕГО] DESC;

Пример результат:

Рейтинг Тип карточки документа Тип ошибки Подкатегория Категория -6 дней -5 дней -4 дня -3 дня -2 дня Вчера Сегодня ВСЕГО
1 Входящее письмо Exicution Timeout Expiried… Согласование этапа WorkflowEnginee 0 1 0 0 0 0 1 2
1 Акт Нельзя загрузить карточку. Таймаут при ожидании, пока другой сотрудник изменяет карточку. Регистрация исходящего WorkflowEnginee 0 0 4 2 0 2 0 8
1 NULL Error converting file Unknown FileConverter 0 0 0 0 4 1 0 5
1 NULL Не найдена карточка с идентификатором ‘00000000-0000-0000-0000-000000000000’. Исполнение WorkflowEnginee 2 0 0 0 0 0 0 2

Разбор ошибок Тессы¶

Ошибка типа Exicution Timeout Expiried¶

Ошибка типа Exicution Timeout Expiried однозначно указывает на длительное ожидание ответа одной из частей архитектуры Тессы. Причиной может быть, например, разрыв соединения или медленное соединение между клиентом Тессы и сервером приложений, сервером приложений и сервером БД Тессы. Причиной также может быть медленная работа сервера БД или самой БД. При этом, медленная работа БД может быть обусловлена неэффективно выстроенными индексами, большим количеством тяжелыми запросами с неоптимальным планом запросов, а также иными причинами.

Ошибка типа Error converting file¶

Конвертация файлов, например, в PDF, также, как и многие другие функции Тессы, например, предпросмотр файлов, в клиентской части Тессы, реализованы через сторонние приложения. В данном случае это может быть LibreOffice, установленный на одном из серверов Тессы. Причиной ошибки может быть неисправность приложения-конвертера, но чаще всего причиной является некорректно созданный файл в MS Word, собранный из частей из разных частей, совместно допустимых в MS Word, но не приемлемых для LibreOffice. Для исправления ошибки, с одной стороны, требуется удалить операцию конвертации в Тессе и перезапустить приложение-конвертер на сервере. С другой стороны, требуется исправить файл или не допустить его попадание вновь в очередь на конвертацию.

Ошибка типа Не найдена карточка с идентификатором '00000000-0000-0000-0000-000000000000'¶

Причиной того, что Тесса не может найти карточку с определенным идентификатором является отсутствие этой карточки среди активных. То есть наличие информации о ней, как минимум, в таблице Instances, где содержится базовая информация по всем активным карточкам в Тессе. Однако, карточка может быть удалена и помещена в аналог «файловой корзины» в операционной системе. В этом случае, ее можно найти через соответствующее представление Тессы «Удаленные карточки». При анализе данной ошибки следует учесть идентификатор, он уникальный, поэтому указание в ошибке на 00000000-0000-0000-0000-000000000000 говорит о том, что система ищет некий аналог системной карточки.

Ошибка типа Нельзя загрузить карточку. Таймаут при ожидании, пока другой сотрудник изменяет карточку¶

Причиной ошибки типа Нельзя загрузить карточку. Таймаут при ожидании, пока другой сотрудник изменяет карточку является блокировка строки таблицы БД, связанной с используемой карточкой. Штатной причиной блокировки является одновременная попытка сохранения данных карточки, отправленных с разных клиентов. Также причиной блокировки может быть разрыв соединения в цепочке взаимодействия серверных элементов Тессы. В этом случае ошибка может появляться параллельно с ошибкой типа Exicution Timeout Expiried.

In [ ]:
 

ms sql tessa анализ информационная система корпоративная информационная система ошибка практика тесса

Предыдущая статьяАнализ активных сессий в БД MS SQL

Рубрики

Метки

abc abcd excel ms sql Python sql tessa VBA xyz Комбинаторика Математика Теория вероятностей анализ виртуальный помощник данные знания информационная система информация искусственный интеллект компетенции корпоративная информационная система маркетинг мудрость о проекте оптимизация ошибка практика программное обеспечение пэст ролевая модель теория тесса юмор языки программирования

Политика конфиденциальности

Продолжая использовать данный сайт вы подтверждаете свое согласие с условиями его политики конфиденциальности. Подробнее…




Администрация и владельцы данного информационного ресурса не несут ответственности за возможные последствия, связанные с использованием информации, размещенной на нем.


Все права защищены. При копировании материалов сайта обязательно указывать ссылку на © Microsegment.ru (2020-2025)