Trace Parser для Microsoft Dynamics AX

Начиная с версии 4.0 для Microsoft Dynamics AX существует внешняя утилита трассировки кода и запросов. Скачать ее можно с PartnerSource.

Утилита предназначена для замены Профайлера кода и Трассировки запросов SQL, сохранившихся с предыдущих версиий в Microsoft Dynamics AX 4.0.

 

Для чего потребовалась внешняя утилита, ведь Профайлер и Трассировка запросов по-прежнему могут использоваться? Дело в том, что внутренние утилиты никак нельзя было назвать "легкими", они генерировали достаточно большой объем данных и складывали его в ту же базу данных, которая использовалась и экземпляром Microsoft Dynamics AX 4.0. В данной статье не рассматриваются внутренние утилиты Профайлера кода и Трассировки запросов SQL.

 

В отличие от внутренних утилит, Trace parser нагружает анализируемую систему максимум на 4%. Trace parser позволяет анализировать файлы логов размерностью до 10Гб, а также сводить в одном месте данные по трассировке запросов RPC, запросов к данным на стороне SQL Server и исполнению кода X++.

Утилита существует в бета-версии, поскольку пока нет планов ее официальной поддержки через обычный канал службы поддержки для Microsoft Dynamics AX 4.0 (версий утилиты до 5.0).

 

Установка проста, нужно указать папку куда складывать данные логов и базу данных для создания представлений. При необходимости анализа ситуации "на лету", можно установить и интеграцию с клиентом Microsoft Dynamics AX. В последнем случае, запустится клиент Microsoft Dynamics AX для импорта требуемых объектов.

image

До установки проверьте наличие .NET Framework 3.0.

 

Включаем трассировку для сервера приложений AOS, если необходимо:

image

 

Теперь включаем трассировку и на клиенте:

image

 

Создаем журнал ГК и разносим его.

Файлы логов сервера и клиента копируем в папку Trace Parcer (в моем случае - C:\AX Trace\Logs\Unprocessed). Хотя это и необязательно, облегчает администрирование.

Импортируем логи:

image

 

Теперь в Trace Analyzer можно открыть лог и начать его анализ. Например, найдем вызовы методов класса LedgerJournalCheckPost, выберем метод.

image

Затем можно нажать кнопку "Jump to Callstack", чтобы посмотреть код.

image

Утилита анализа довольная проста и понятна, особенно тем, кто ранее имел дело с внутренними утилитами Профайлера кода и Трассировки запросов SQL. Имеются развитые средства поиска, описанные в документации.

 

Что в документации не описанно или недостаточно детализированно, так это описание вызовов RPC:

Метод Описание
[Client\Server]EvalFunc Оценка функции на другом уровне (для клиента – на серверном уровне)
[Client\Server]FreeClass Освобождение объекта на другом уровне
ServerNext Операции доступа к данным или манипуляций с данными со стороны клиента
ServerWriteBegin Вызов TTSBegin на клиенте
ServerWriteEnd Вызов TTSCommit\TTSAbort на клиенте
[Client\Server]DestructCursor Очистка буфера записи на другом уровне
[Client\Server]UpdateDirtyCursor Обновление буфера записи на другом уровне с новой информацией
ServerRecordInsertList Вызов операции вставки записей с использованием RecordInsertList со стороны клиента
[Client\Server]SetClassLoopDependencies Увеличение счетчика ссылок к объекту на другом уровне
[Client\Server]TestClassLoopDependencies Запрос к другому уровню с целью проверки статуса объекта и его освобождению, если таковое возможно

 

Данная статья подготовлена с помощью Windows Live Writer .