Экспертный материал
Развитие Microsoft Dynamics AX в транспортной компании
Кейс по производительности
Олег Полищук
руководитель отдела разработки «Консист Бизнес Групп»
О заказчике

Транспортная компания, 7000+ сотрудников.


Задача

В Microsoft Dynamics AX ведется кадровый учет и расчет заработной платы для всех сотрудников. Цикл расчета заработной платы состоит из трех последовательных этапов, каждый из которых занимает продолжительное время:
  1. Формирование табелей учета рабочего времени сотрудников – 10-12 часов
  2. Принятие сформированных ранее табелей к учету – 7,5 часов
  3. Непосредственно расчет заработной платы - 12 часов
Заказчиком была поставлена задача существенного ускорения указанных операций, целевое суммарное время определено как 4 часа.

Решение
В ходе первичного анализа была оптимизирована структура индексов базы данных, однако это позволило выиграть не более 10% времени выполнения, тогда как требовалось уменьшить время работы почти в 8 раз.

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

За основу была взята стандартная инфраструктура пакетных заданий Microsoft Dynamics AX, поддерживающая работу в многопоточном режиме. Таким образом мы могли создать большое количество небольших подзадач, после чего в несколько потоков их обрабатывать независимо друг от друга. При этом, чем больше потоков мы сделаем, тем до определенного предела в общем случае быстрее выполнится операция, но тем сильнее будет нагрузка на сервера. Схема выполнения операции каждого из этапов представлена ниже:
После разработки фреймворка были проведены тесты производительности, позволившие найти компромисс между скоростью и загрузкой сервера.

В таблице ниже приведены результаты замеров времени выполнения этапа и загрузки CPU на АОСе при выполнении расчета заработной платы в зависимости от количества параллельных потоков.
Результат:

Проведенные работы позволили сократить время выполнения операций цикла расчета заработной платы примерно с тридцати часов до менее, чем трех, что меньше, чем целевое время, указанное Заказчиком до начала выполнения работ.

Итоговые достигнутые времена выполнения операций при использовании двух пакетных серверов представлены в таблице ниже.
Связаться с нами
Ваш вопрос
Made on
Tilda